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如何从配置文件动态设置连接字符串的主要内容,如果未能解决你的问题,请参考以下文章