我必须在2008年使用BIDS编写一个SSIS程序包,并且必须有一个简单的foreach循环,该循环可以从数据库中读取服务器和DB的列表,然后遍历它们以运行各种数据流。
我遇到的问题是验证之一-我在需要的地方设置了Delayed Validation = true
,但是只要OLEDB Source的任何部分发生更改(它的连接是通过foreach动态设置的),它都会坚持重新验证连接。这意味着每次代码更改时,我必须创建一个新连接,然后再次为服务器和数据库设置表达式。我已经在2013年使用SQL数据工具重新创建了该程序包,并且可以很高兴地使用具有在所有数据流中设置的属性的单个数据库连接。
这是2008年的已知限制,还是我做错了什么?
编辑以使问题更清楚
在运行时,除了连接的属性在连接服务器和数据库列表之间循环时,我没有进行任何更改。问题出在设计器中,因为它不会停止尝试验证连接。因此,例如,在SSIS 2013+中,我具有动态设置的连接属性,如果更改了基础数据调用,则切换到非动态连接,更新列和元数据等,然后切换回我的动态连接。没问题在2008年,当我切换回动态连接时,它将无法验证(因为表达式是在运行时设置的),因此我必须实际设置一个新连接,然后通过表达式设置它的属性,这很高兴。显然,在我进行开发和测试时,这就是PITA。希望这会更清楚。