我在SQL Server Business Intelligent Development Studio中使用SQL Server Integration Services(SSIS)。
我需要做一个如下任务。我必须从源数据库中读取并将其放入目标平面文件中。但同时源数据库应该是可配置的。
这意味着在OLEDB连接管理器中,连接字符串应该动态更改。此连接字符串应取自配置/ XML /平面文件。
我读到我可以使用变量和表达式动态更改连接字符串。但是如何从config / XML / flat文件中读取连接字符串值并设置变量?
这部分我无法做到。这是实现这一目标的正确方法吗?我们可以将web.config文件添加到SSIS项目吗?
答案 0 :(得分:30)
首先向SSIS包添加一个变量(包范围) - 我使用了FileName,OleRootFilePath,OleProperties,OleProvider。每个变量的类型是“string”。然后我创建一个配置文件(选择每个变量 - 值) - 填充配置文件中的值 - 例如:for OleProperties - Microsoft.ACE.OLEDB.12.0; for OleProperties - Excel 8.0; HDR =,OleRootFilePath - 您的Excel文件路径,FileName - FileName
在连接管理器中 - 我然后设置属性 - >以下词组>动态连接字符串表达式,例如:
"Provider=" + @[User::OleProvider] + "Data Source=" + @[User::OleRootFilePath] + @[User::FileName] + ";Extended Properties=\"" + @[User::OleProperties] + "NO \""+";"
这样一旦你设置变量值并在配置文件中更改它 - 连接字符串将动态改变 - 这尤其有助于从开发环境转移到生产环境。
答案 1 :(得分:26)
一些选项:
在运行程序包之前,您可以使用Execute Package Utility更改数据源。
您可以使用DTEXEC运行程序包,并通过传入/ CONNECTION参数来更改连接。可能将其保存为批处理,以便下次您不需要输入整个内容,只需根据需要更改数据源。
您可以使用SSIS XML package configuration文件。这是walk through。
您可以将配置保存在数据库表中。
答案 2 :(得分:10)
以下是您应该使用的机制的一些背景知识,称为包配置:Understanding Integration Services Package Configurations。 本文介绍了5种配置:
以下是在Connection Manager上设置配置的演练:SQL Server Integration Services SSIS Package Configuration - 我确实意识到这是为连接字符串使用环境变量(不是一个好主意),但基本知识与使用XML文件。您必须在该演练中更改的唯一步骤是配置类型,然后是路径。
答案 3 :(得分:2)
转到包属性 - >配置 - >启用包配置 - >添加 - > xml配置文件 - >指定dtsconfig文件 - >单击下一步 - >在OLEDB属性中勾选连接字符串 - >将显示连接字符串值 - >单击下一步,然后配置完成包。
您也可以在此过程中添加环境变量
答案 4 :(得分:0)
这些答案是正确的,但旧的并适用于Depoloyement Package Model
。
我实际需要的是更改服务器名称,连接管理器的数据库名称,我发现这非常有用:
https://www.youtube.com/watch?v=_yLAwTHH_GA
对于使用SQL Server 2012-2014-2016的用户Deployment Project Model