【问题标题】:Access multiple Connection Managers in SSIS 2012 Execute SQL Task在 SSIS 2012 执行 SQL 任务中访问多个连接管理器
【发布时间】:2015-06-04 19:23:13
【问题描述】:

我有一个 SSIS 2012 项目,其中包含一个执行 SQL 任务。必须将包部署到 SQL Server,以便它可以独立于用户干预运行。 T-SQL 访问两个不同的 SQL 服务器,如下所示:

INSERT INTO Server1.MyDatabase1.dbo.MyTable1
SELECT * FROM Server2.MyDatabase2.dbo.MyTable2 T2
WHERE T2.MyField2 NOT IN (SELECT MyField1 FROM Server1.MyDatabase1.dbo.MyTable1)

这很好用,但显然不是很便携。我想为 Server1 和 Server2 创建两个连接管理器,并参考 T-SQL 中连接管理器的值。连接管理器也包含在 Project.params 中,因此我可以改用 Project.params。无论如何,是否可以在执行 SQL 任务中引用连接管理器或 Project.params?或者我可以从它们创建变量并引用执行 SQL 任务中的变量吗?还是我需要以完全不同的方式来解决这个问题,例如通过数据流任务拉入两个数据集,然后处理它们?

【问题讨论】:

    标签: ssis sql-server-2012 ssis-2012


    【解决方案1】:

    一种方法是使用变量:

    • Variable1:保存 Server1 的名称
    • Variable2:保存名称 服务器2
    • Variable3:保存整个 SQL 语句并构造 使用变量 1 和 2。

    然后您的执行 SQL 任务使用变量 3 作为其源。

    但是,该语句将仅在一个 ConnectionManager 上运行,因此它必须是可以使用 4 部分命名约定运行该语句的一个,如您的问题中所示。

    【讨论】:

    • 谢谢!因此,如果我想部署到另一组服务器,我必须更改变量值,对吧?如果可能的话,我会尽量避免这种情况。
    • 您可以使用参数设置变量,或者使用位于不同服务器上的 .config 文件设置变量,这样您就不需要在每台服务器上使用不同版本的软件包。您在问题中的表述方式听起来像是一种解决方案,可以让您使用参数创建可以在执行 SQL 任务中引用的变量。
    • 我在我原来的问题中添加了更多信息:这个包必须部署到 SQL Server 并独立于任何用户交互运行。而且,当我说“参数”时,我指的是在 SSIS 2012 中创建的 Project.params,它们代表不同的项目连接,不是执行 SQL 任务中的参数映射。我想要做的是将变量映射到 Project.params 所以当我将包移动到另一组服务器时,我只需要更改后者(无论如何我都会这样做)。谢谢!但我会研究你的配置文件建议,谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-06
    • 2014-05-05
    • 2023-03-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多