【问题标题】:How can I use a Variable for a OLE DB Connection in SSIS如何在 SSIS 中将变量用于 OLE DB 连接
【发布时间】:2016-08-10 15:45:03
【问题描述】:

有没有办法使用用户定义的变量来定义 SSIS OLE DB 连接的连接字符串?

1) 我最初将它设置为使用包参数。

2) 我在 SQL 存储过程中使用 xp_cmdshell 从文件执行 SSIS 包,但发现包参数是只读的。

  • 我收到此错误...“更改变量的值失败,因为它是参数变量。参数变量是只读的”

3) 所以看起来我需要使用变量...但是,我没有看到将变量用于连接字符串的方法。当我为连接使用“参数化”选项时,它只让我选择一个参数,而不是一个变量。

有什么想法吗?谢谢!

【问题讨论】:

  • 所以你基本上想做this?
  • 我在本地环境中进行了精确设置。但是,在 Dev、Qa、Prod 等中......我们必须跳过一堆圈才能在 SQL Server 中设置集成服务。目前,我公司的所有 SSIS pkgs 都被复制到一个目录中,并使用 xp_cmdshell 执行。问题是,当前没有一个需要动态连接字符串,所以直到现在这还不是问题。所以,我必须想办法让它在当前设置下工作。这是一个紧迫的时间框架,对 SQL 服务器进行更改的批准过程将花费太长时间......有意义吗?
  • 如果您只需要在每个环境的基础上指定连接字符串,您可以在部署包后通过 SQL Server 执行此操作。 (即,这是一个配置设置,而不是在代码中设置的东西)
  • 这是从用户本地环境执行的。他们将指定一个目标“暂存”环境来复制一些数据库。因此,根据包的部署位置设置值是行不通的。它必须是动态的,以便用户可以传入连接字符串。
  • 您使用的是什么版本的 SSIS?

标签: sql-server parameters ssis


【解决方案1】:

我确信您将从 cmets 获得很多建议,但您问如何使用变量作为连接字符串来回答这部分。很简单,

  • 添加包变量(在空白处右键单击控制流并选择变量将带您到可以添加的位置)
  • 选择连接管理器,然后转到属性(我使用右键单击属性)
  • 点击表达式,然后点击 ... 按钮
  • 在“属性”中选择“ConnectionString”并将表达式设置为您的变量或您想要的任何内容。

【讨论】:

  • 当我尝试走这条路时,我在连接管理器中使用了“参数化”选项。没有使用变量的选项,只有包参数。以你的方式做这件事让我可以做我需要做的事情。谢谢!
【解决方案2】:

是的,马特的回答是正确的。您可以在连接管理器的表达式中使用用户定义的变量。

这有一个限制。这个变量只适用于这个包。

您应该创建一个项目参数而不是用户定义的变量,以便您将来也可以配置项目的任何包。

如果同一连接用于多个包,您可以在项目级别移动连接管理器。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-11-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多