如何使SSIS包动态地选择所需的连接管理器?

时间:2019-04-09 16:10:22

标签: sql-server ssis visual-studio-2017 oledb ssis-2017

我有一个SSIS包,其中带有到“ SQL Server 1”的OLE DB连接管理器,以及来自本地计算机D盘的平面文件管理器。

该软件包基本上从我正在使用的计算机的D盘中检索数据,并通过一系列带有SQL任务的循环容器将其发送到“ SQL Server 1”。一切都很好。

挑战在于,我想将完全相同的程序包部署到“ SQL Server 2”。 “ SQL Server 2”中的所有文件,表等以及“ SQL Server 2”所在的本地计算机的D盘中的文件都完全相同。但是,我不知道该怎么做。

如果我将OLE DB连接管理器更改为“ SQL Server 2”,则所有工作都将正常进行,因为SQL任务会自动选择存在的唯一连接。尽管如此,关键是要以某种方式动态地执行此操作。

这意味着同时将“ SQL Server 1”和“ SQL Server 2”作为OLEDB连接管理器,并将相同的SSIS项目部署到两台服务器上(目前仅部署到“ SQL Server 1”上)。

我在“项目-属性”下创建了一个新配置,该配置已将“ SQL Server 2”选择为要部署的服务器名称。最初只有一个,其中当然有“ SQL Server 1”作为部署服务器。我知道这还不够,但是不知道该怎么办。

目标是将相同的程序包部署到Server1和Server2,任何帮助将不胜感激。谢谢

2 个答案:

答案 0 :(得分:1)

您可以使用表达式来动态更改OLEDB连接管理器的connectionstring属性:

您可以添加Variable或Project参数,并在包执行时传递连接字符串。有关更多详细信息,请参阅以下文章之一:

答案 1 :(得分:1)

答案在我找到的链接中(在末尾发布)中进行了详细说明,并逐步说明了我要如何做,即通过使连接字符串动态化将SSIS包部署到不同的服务器:

基本上遵循5个步骤(同样,在链接中有详细说明):

  1. 创建项目参数,并使用项目参数配置项目的连接管理器
  2. 将项目部署到SQL Server中的SSIS目录中
  3. 在SSIS目录中创建环境以及变量
  4. 将环境链接到项目以及带有参数的变量
  5. 使用环境执行包
相关问题