任何人都知道如何在SSIS中为系统集成测试环境,用户验收测试环境和生产环境等不同环境指定不同的连接字符串?它是通过定义多个连接管理器来完成的,还是我们可以定义多个配置文件并指向我们的连接字符串?
答案 0 :(得分:2)
您不需要为同一个数据库建立多个连接。
在SSIS 2008中:
使用表达式定义连接字符串是个好主意。这就是你如何做到的:
假设您在连接管理器中添加了一个新的OLEDB连接。复制ConnectionString属性的值。它看起来像这样: Data Source =(local); Initial Catalog = Learn; Provider = SQLNCLI10.1; Integrated Security = SSPI; Application Name = SSIS-RaggedFile- {03053F2E-8101-4985-9F2B-8C2DDE510065}(local).Learn; Auto Translate =假;
删除非必需品: Data Source =(local); Initial Catalog = Learn; Provider = SQLNCLI10.1; Integrated Security = SSPI;
现在在控制界面级别创建三个新变量:sServer,sDb,sProvider。所有这三个变量的类型将是字符串。它们的值 - 使用此示例 - 将是(local),Learn和SQLNCLI10.1。
返回连接的ConnectionString属性。并将其值设置为
"Data Source=(local);Initial Catalog=Learn;Provider=SQLNCLI10.1;Integrated Security=SSPI;"
现在,将服务器,数据库和提供程序替换为您创建的变量,使表达式如下所示:
"Data Source=" + @[User::sServer] + ";Initial Catalog=" + @[User::sDb] + ";Provider=" + @[User::sProvider] + ";Integrated Security=SSPI;"
当我们从一个环境移动到另一个环境时,我们可能会遇到不同版本的数据库 - 因此为提供者提供变量也很有帮助。
现在,可以在部署时更改这些值。
在SSIS 2012中 - 这种方法仍然可以进行一些改变。将这三个变量更改为参数并使其成为必需参数。这样,在部署部署时,您将被迫更改值。这只是一个起点。阅读服务器环境。
注意:我认为变量应该具有原子价值。这有助于避免因错误输入而导致的任何错误。这就是为什么我创建了三个独立的变量而不是一个名为sCnxn的变量(例如),并且有人在部署时更改了该变量的一部分。