SSIS如何从配置文件动态设置连接字符串

42

我正在使用SQL Server Business Intelligent Development Studio中的SQL Server Integration Services(SSIS)。

我需要完成以下任务:从源数据库读取数据并将其放入目标平面文件。但同时源数据库应该是可配置的。

这意味着在OLEDB Connection Manager中,连接字符串应该是动态变化的。这个连接字符串应该来自一个配置/XML/平面文件。

我了解到可以使用变量和表达式来动态更改连接字符串。但是如何从配置/XML/平面文件中读取连接字符串的值并设置变量呢?

这一部分我做不到,这是实现这一目标的正确方法吗?我们可以将web.config文件添加到SSIS项目中吗?

5个回答

33

首先在您的SSIS包(包范围)中添加变量 - 我使用了FileName、OleRootFilePath、OleProperties、OleProvider。每个变量的类型为“string”。然后我创建了一个配置文件(选择每个变量 - 值) - 在配置文件中填充值 - 例如:对于OleProperties- Microsoft.ACE.OLEDB.12.0;对于OleProperties - Excel 8.0;HDR=,OleRootFilePath- 您的Excel文件路径,FileName - FileName。

在连接管理器中 - 然后我动态地设置属性->表达式->连接字符串表达式,例如:

"Provider=" + @[User::OleProvider] + "Data Source=" + @[User::OleRootFilePath]
+ @[User::FileName]  + ";Extended Properties=\"" + @[User::OleProperties] + "NO \""+";"

这样一来,一旦您设置了变量的值并在配置文件中进行更改-连接字符串就会动态更改-这在从开发环境移动到生产环境中非常有用。


1
谢谢,这是最好的教程。 - Sky

26

一些选项:

  1. 在运行包之前,您可以使用执行包实用程序更改数据源。

  2. 您可以使用DTEXEC运行包,并通过传递/CONNECTION参数来更改连接。可能会将其保存为批处理文件,这样下次就不需要输入整个命令,只需根据需要更改数据源即可。

  3. 您可以使用SSIS XML 包配置文件。这里是一个步骤说明

  4. 您可以将配置保存在数据库表中。


3
你可以将配置保存在数据库表中。 - HLGEM
了解集成服务包配置中,描述了5种类型的配置。 - Michael Freidgeim

10

以下是涉及IT技术的机制背景介绍,采用的名称为“包配置”(Package Configurations):理解 Integration Services 包配置。 该文章描述了5种不同类型的配置:

  • XML 配置文件
  • 环境变量
  • 注册表项
  • 父包变量
  • SQL Server

以下是设置连接管理器配置的实例教程:SQL Server Integration Services SSIS 包配置 - 我知道此处使用了环境变量来存储连接字符串(并不是一个好主意),但基本步骤与使用 XML 文件相同。在这个教程中,唯一需要更改的步骤是配置类型和路径。


2

打开包属性 -> 配置文件 -> 启用包配置 -> 添加 -> XML 配置文件 -> 指定 dtsconfig 文件 -> 点击下一步 -> 在 OLEDB 属性中勾选连接字符串 -> 连接字符串值将被显示 -> 点击下一步,完成包的配置。

在此过程中,您还可以添加环境变量。


1
这些答案是正确的,但适用于旧版的部署包模型。我实际上需要更改连接管理器的服务器名称和数据库名称,我发现这非常有帮助:

https://www.youtube.com/watch?v=_yLAwTHH_GA

更适用于使用SQL Server 2012-2014-2016的人,使用“部署项目模型”……

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接