在SSIS 2012中访问多个连接管理器执行SQL任务

时间:2015-06-04 19:23:14

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

我有一个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任务中的变量吗?或者我是否需要以完全不同的方式解决这个问题,例如通过数据流任务提取数据集然后处理它们?

1 个答案:

答案 0 :(得分:1)

一种方法是使用变量:

  • Variable1:保存Server1的名称
  • 变量2:保留名称 Server2
  • Variable3:保存整个SQL语句并构建 使用变量1& 2。

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

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