也许我的帖子标题不太合适,但我不确定我是如何命名的。无论如何,我最近得到了一个使用FoxPro DB的传统SSIS包。但现在决定拿走FoxPro并带上SQL Server(实验性的)。那么,让我描述一下到目前为止我所拥有的
我的DEV环境中有三个FoxPro连接字符串(来自不同的仓库)。这三个连接字符串是我数据的主要来源。这些连接字符串列在SLQ Server表中,例如表名为dbo.Source
。现在,SSIS包的设计方式使它可以从dbo.source
表中收集这些连接字符串,并使用控制流中的Foreach Loop Container
循环遍历每个连接字符串,并将其分配给变量say { {1}},然后变量DataSource
的当前值用作DataSource
中的连接字符串。然后在数据流中,OLE DB Connection Manager
用于数据流源。
现在OLE DB Connection Manager
中的一个连接字符串已更改为SQL Server数据源,其余两个与FoxPro相同。现在,当循环运行并且dbo.source
SQL Server连接字符串(因为它是FoxPro提供程序)时,它会抛出错误。所以我想这样做,我可以动态地更改OLE DB Connection Manager
设置取决于来自OLE DB Connection Manager
表的不同类型的连接字符串(好吧,我在脚本任务中识别它)。这可能听起来很荒谬,但我只是希望找到一些方法来做到这一点。几乎忘了提到我正在使用SQL Server Business Intelligence 2008,如果有任何问题。
答案 0 :(得分:1)
如果您已经在使用脚本任务,为什么不创建新的字符串或int变量并将其值设置为1或0,具体取决于脚本任务中标识的连接类型?
接下来,创建两个单独的数据流任务,一个用于FoxPro,一个用于SQL,然后通过条件表达式约束将它们连接到脚本任务。 这样,将遵循正确的路径。
答案 1 :(得分:1)
在循环中设置连接字符串的方法可能比它的价值更加痛苦,并且真正与SSIS打算使用的方式相抗衡。考虑一下:
使用标准方法的好处是它更易于维护,因为它是预期的。一个从事该项目的新人将能够直接进入。此外,可以验证元数据,因此您可以在开始执行之前了解事情是否有效。