1

我制作了多个 SSIS 包并通过将序列容器复制粘贴到单个dtsx文件中将它们集成到单个包中

结果,我现在有多个连接管理器都指向相同的 2 个位置(因为它们被每个序列容器复制并重命名)

有没有办法将它们合并在一起,以便我可以仅更改其中一个副本中的连接字符串以反映整个包中的更改?

(我知道我可以手动更改所有任务以使用相同的连接字符串,但想避免这种情况)

4

3 回答 3

2

您可以将ConnectionString多个 ConnectionManager 的属性设置为同一个变量。这将允许您更改一次值并将其应用于所有连接。

但是,您仍然需要检查所有 ConnectionManager 并ConnectionString手动将它们的属性设置为变量。(当然,除非您想手动编辑 .dtsx 文件,或者编写 .NET 应用程序以编程方式更新包。)删除所有额外的 ConnectionManager 并更新任务和组件可能会更容易手动。

于 2013-02-13T15:06:47.723 回答
1

当您将这些连接管理器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 的配置选项。

于 2013-02-13T15:02:55.257 回答
0

据我所知,恐怕您将不得不手动执行此操作。此外,您不希望工作中的 5 个连接管理器都连接到同一个数据库。

于 2013-02-13T12:03:50.193 回答