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



我有一个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 Server2"作为OLEDB连接管理器,并将相同的SSIS项目部署到两个服务器(现在它仅部署到"SQL Server 1")。

我在"项目 - 属性"下创建了一个新配置,该配置选择了"SQL Server 2"作为部署的服务器名称。最初,只有一个存在,当然有"SQL Server 1"作为部署服务器。我知道这还不够,但不知道还能做什么。

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

可以使用表达式动态更改 OLEDB 连接管理器连接字符串属性:

  • 如何在 SSIS 中将变量用于 OLE DB 连接
  • SSIS 如何从配置文件动态设置连接字符串

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

  • 在 SQL Server Integration Services 中参数化数据库连接
  • 使用 SSIS 环境变量在运行时参数化连接和值

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

  • SQL Server Integration Services 中的安装环境变量

基本上是遵循5个步骤(再次,在链接中详细说明):

创建项目参数
  1. 并使用项目参数配置项目的连接管理器
  2. 将项目部署到 SQL 服务器中的 SSIS 目录
  3. 在 SSIS 目录中创建环境以及变量
  4. 使用参数将环境链接到项目和变量
  5. 使用环境执行包

最新更新