SSIS连接管理器未使用ConnectionString值

时间:2015-02-19 17:02:55

标签: sql-server ssis sql-server-2008-r2 connection-string

我有一个子包,其中Connection Manager的ConnectionString属性由父包变量配置设置。我设置了一个脚本任务,在数据流任务之前调出一个带有ConnectionString属性值的消息框。

`MessageBox.Show(Dts.Connections["CPU_*"].ConnectionString.ToString());`

当我运行父包时,消息框显示连接字符串随每次迭代而变化,但在数据流中它总是从同一源中提取数据。

我使用的是SQL Server 2008 R2,连接管理器是ADO.Net类型,RetainSameConnection设置为False,我已经研究了好几天了。有人有什么想法吗?

更新(2015年2月23日):为了使这个陌生人,当我查看诊断日志时,他们告诉我,当打开新连接时,他们正在使用新的连接字符串。

1 个答案:

答案 0 :(得分:0)

我在这里找到了答案Passing SSIS Connection String in parent variable works but package still validates against child design value

我还不确定以后的版本,但是当你将连接字符串传递给子包时,肯定会有2008R2。正确地指出连接字符串IS已传递,但是在父配置之前评估连接,或者在传递父配置之后从设计对象更新连接字符串。

无论哪种方式它都不起作用。

如果像我一样,您不想在所有包中添加额外的脚本任务,则需要执行以下操作:

父包

  • 让我们假设我们使用名为 MyDBConnection 的OLE DB连接
  • 添加字符串变量以保存连接字符串( MyConnection
  • 使用以下行添加C#脚本任务(在包任务之前):

    Dts.Variables [“User :: MyConnection”]。Value = Dts.Connections [“MyDBConnection”]。ConnectionString;

儿童套餐

  • 添加字符串变量以保存连接字符串( MyConnection
  • 添加父包配置以传递 MyConnection
  • 的值
  • 在OLE DB连接的属性中添加表达式以从 MyConnection
  • 更新连接字符串属性