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

Posted

技术标签:

【中文标题】SSIS如何从配置文件动态设置连接字符串【英文标题】:SSIS how to set connection string dynamically from a config file 【发布时间】:2011-01-30 16:06:10 【问题描述】:

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

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

这意味着在 OLEDB 连接管理器中,连接字符串应该动态变化。此连接字符串应取自配置/XML/平面文件。

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

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

【问题讨论】:

【参考方案1】:

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

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

"Provider=" + @[User::OleProvider] + "Data Source=" + @[User::OleRootFilePath] + @[User::FileName] + ";扩展属性=\"" + @[User::OleProperties] + "NO \""+";"

这样,一旦您设置变量值并在配置文件中更改它 - 连接字符串将动态更改 - 这尤其有助于从开发环境转移到生产环境。

【讨论】:

谢谢,这是最好的攻略。【参考方案2】:

一些选项:

    您可以在运行包之前使用Execute Package Utility 更改您的数据源。

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

    您可以使用 SSIS XML package configuration 文件。这是walk through。

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

【讨论】:

4.您可以将配置保存在数据库表中。 Understanding Integration Services Package Configurations中描述了5种配置【参考方案3】:

这里是您应该使用的机制的一些背景知识,称为包配置:Understanding Integration Services Package Configurations。 文章描述了 5 种类型的配置:

XML 配置文件 环境变量 注册表项 父包变量 SQL 服务器

这是在连接管理器上设置配置的演练:SQL Server Integration Services SSIS Package Configuration - 我确实意识到这是使用环境变量作为连接字符串(不是一个好主意),但基本与使用 XML 文件相同.在该演练中,您必须更改的唯一步骤是配置类型,然后是路径。

【讨论】:

【参考方案4】:

转到包属性->配置->启用包配置->添加->xml配置文件->指定dtsconfig文件->点击下一步->在OLEDB属性中勾选连接字符串->将显示连接字符串值->单击下一步并完成包因此配置。

您也可以在此过程中添加环境变量

【讨论】:

【参考方案5】:

这些答案是正确的,但旧的并且适用于Depoloyement Package Model。 我实际需要的是更改服务器名称、连接管理器的数据库名称,我发现这非常有用:

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

更适合使用 SQL Server 2012-2014-2016 ... 和Deployment Project Model的人

【讨论】:

以上是关于SSIS如何从配置文件动态设置连接字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SSIS 包中检索 SQL Server 实例名称

SSIS:动态查找查询

SSIS - “外部表不是预期的格式”和.xls文件

数据仓库之SSIS开发

为 Salesforce 动态决定 SSIS 连接器中的列

访问数据库连接参数时 SSIS 作业失败