动态检查不同数据库的连接字符串

时间:2015-05-20 06:12:10

标签: ssis

也许我的帖子标题不太合适,但我不确定我是如何命名的。无论如何,我最近得到了一个使用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,如果有任何问题。

2 个答案:

答案 0 :(得分:1)

如果您已经在使用脚本任务,为什么不创建新的字符串或int变量并将其值设置为1或0,具体取决于脚本任务中标识的连接类型?

接下来,创建两个单独的数据流任务,一个用于FoxPro,一个用于SQL,然后通过条件表达式约束将它们连接到脚本任务。 这样,将遵循正确的路径。

答案 1 :(得分:1)

在循环中设置连接字符串的方法可能比它的价值更加痛苦,并且真正与SSIS打算使用的方式相抗衡。考虑一下:

  • 创建两个连接管理器 - 一个用于fox pro,一个用于SQL
  • 为每个表创建数据流并使用正确的方法将它们连接起来 连接经理
  • 使用包配置(即SQL表)来配置 连接字符串
  • 如果有很多表,这似乎很多工作,请使用 BIML生成包

使用标准方法的好处是它更易于维护,因为它是预期的。一个从事该项目的新人将能够直接进入。此外,可以验证元数据,因此您可以在开始执行之前了解事情是否有效。