【问题标题】:Overriding The SSIS Connection Manager ConnectionString During Run-Time在运行时覆盖 SSIS 连接管理器 ConnectionString
【发布时间】:2012-11-26 08:32:51
【问题描述】:

我有一个 SSIS 包,我从不同的 SQL Server 代理作业并行执行了几次。我使用命令行参数 /CONNECTION 将 ConnectionString 设置为连接管理器。

似乎 SSIS 再次用设计时值覆盖了我的运行时 ConnectionString。我还发现了一篇 MSDN 文章,指出确实会发生这种情况。
http://msdn.microsoft.com/en-us/library/bb500430(v=sql.105).aspx

有没有办法在运行时覆盖连接管理器 ConnectionString?我需要这个功能,因为我对不同的设置使用相同的包,所以我不能“硬编码”ConnectionString。

【问题讨论】:

  • 你是不是也在使用配置(xml、表、环境变量、注册表)来设置相同的连接字符串?
  • 不,我正在使用 SQL Server 中的 PackageConfigurations,但我根本没有接触那个连接管理器。

标签: ssis


【解决方案1】:

如果您仅限于使用命令行,则使用 /SET 在运行时更改 变量 的值并使用表达式,从中构建连接字符串变量(正如您在上面发布的链接所说 /SET 会覆盖设计时值,而 /CONNECTION 不会。)

dtexec /f mypackage.dtsx /set \package.variables[myvariable].Value;myvalue

在运行时覆盖或提供 ConnectionSting 的另一种方法是开始使用 Package Configurations,如 here 所述。

【讨论】:

  • 我不确定这是否可行。如果您查看我提供的链接,它会说它没有效果,因为在应用运行时值之后,该值被设计时值覆盖。我已经在使用 SQL Server 中的包配置,但为了能够加载配置,我需要连接到 SQL Server,并且我计划提供运行时参数。
  • 如果您更改 location,它没有效果,但对 property 有预期效果(您所指的表中的第 3 行到)
  • 您指的是 2005 年(第一列)。我有 2012 年,所以行为与 2008 年(第二列)相同,即没有任何影响。
  • 在 SQL Server 2008 Integration Services 中,事件按以下顺序发生:实用程序首先应用设计时配置。然后,该实用程序会应用您在启动该实用程序时在命令行上指定的运行时选项。最后,该实用程序重新加载并重新应用设计时配置。 由于事件按此顺序发生,您可以通过使用 /SET 命令行选项更改配置字符串来动态重定向配置。
  • 现在我明白了你的目的,这种方法似乎有效!
【解决方案2】:

使用记事本编辑[mypackage].dtsx,手动更改ConnectionString,然后保存。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-12
    相关资源
    最近更新 更多