我制作了多个 SSIS 包并通过将序列容器复制粘贴到单个dtsx
文件中将它们集成到单个包中
结果,我现在有多个连接管理器都指向相同的 2 个位置(因为它们被每个序列容器复制并重命名)
有没有办法将它们合并在一起,以便我可以仅更改其中一个副本中的连接字符串以反映整个包中的更改?
(我知道我可以手动更改所有任务以使用相同的连接字符串,但想避免这种情况)
我制作了多个 SSIS 包并通过将序列容器复制粘贴到单个dtsx
文件中将它们集成到单个包中
结果,我现在有多个连接管理器都指向相同的 2 个位置(因为它们被每个序列容器复制并重命名)
有没有办法将它们合并在一起,以便我可以仅更改其中一个副本中的连接字符串以反映整个包中的更改?
(我知道我可以手动更改所有任务以使用相同的连接字符串,但想避免这种情况)
您可以将ConnectionString
多个 ConnectionManager 的属性设置为同一个变量。这将允许您更改一次值并将其应用于所有连接。
但是,您仍然需要检查所有 ConnectionManager 并ConnectionString
手动将它们的属性设置为变量。(当然,除非您想手动编辑 .dtsx 文件,或者编写 .NET 应用程序以编程方式更新包。)删除所有额外的 ConnectionManager 并更新任务和组件可能会更容易手动。
当您将这些连接管理器ID
粘贴到其中时,它们中的每一个都将获得一个新属性。当它们用于Execute SQL Tasks
显示连接管理器的友好名称但在工作表下方时,会存储该 GUID。这就是为什么您可以将连接管理器 A 重命名为连接管理器 B,反之亦然,并且任务仍将使用“正确的”CM。
一种允许您继续拥有现有连接管理器但只需要配置 2 个东西的方法是创建 2 个变量,User::ConnectionManagerAConnectionString
并将User::ConnectionManagerBConnectionString
这些变量的值分配为包中的实际连接字符串,例如Data Source=localhost\DEV2012;Initial Catalog=FOO;Provider=SQLNCLI10.1;Integrated Security=SSPI;
有了这两个变量,然后在每个连接管理器上,右键单击它们并在“属性”窗口中,找到“表达式”并单击省略号。选择ConnectionString
属性并在表达式中分配您的变量。
现在,当您的包运行时,所有这些连接管理器都是根据这些表达式配置的。如果您需要更改这些值,您可以编辑包或通过 dtexec 应用运行时配置或使用 SSIS 的配置选项。
据我所知,恐怕您将不得不手动执行此操作。此外,您不希望工作中的 5 个连接管理器都连接到同一个数据库。