SSIS 连接管理器

SSIS Connection manager

我创建了两个具有相同连接管理器名称的项目。虽然名称相同,但它们指向两个不同的环境。 我假设如果我将一个项目的包添加到另一个项目,我不应该面临与连接管理器相关的问题。 但我仍然收到连接管理器“”未找到的错误。 这是否意味着即使我有相同的连接管理器名称,我仍然需要打开每个 DFT 并手动更改连接管理器?

此致, K

我想明白这里问的是什么了。

项目 1

  • 项目级连接我们称之为"TestConnection"
  • 我们称之为 "TestPackage1" 的 SSIS 包正在使用项目级连接 "TestConnection"

项目 2

  • 同样,我们将调用项目级连接 "TestConnection"
  • 我们称之为 "TestPackage2" 的 SSIS 包正在使用项目级连接 "TestConnection"

您将 "TestPackage1" 从项目 1 移动到项目 2,现在所有数据流、执行 sql 任务都在抱怨缺少连接管理器。

您问的是:

Does this mean that even if I have same connection manager name, I still need to open each DFT and change the connection managers manually?

简答....是

了解在后台使用 SSIS 封装每个对象、数据流、执行 sql 任务、源、目标、连接管理器都分配了唯一的 GUID。每个对象在创建它们的 project/solution 中相互引用时都会使用该唯一的 GUID。

因此,即使您将包从一个项目移动到另一个项目并且连接管理器的名称相同,该连接管理器在不同项目之间也不会有相同的 GUID。

你可以在查看连接管理器的代码和查看包的代码时看到。

来自 Visual Studio:

  • 打开包后,单击工具栏中的“查看”->“代码”
  • 然后右键单击解决方案资源管理器中的连接管理器并单击查看代码

这会让您看到 XML 代码。如果我在我的包代码中向下滚动到其中一个数据流,您将看到 connectionManageID 正在引用连接管理器的 GUID:

你可以,而且我过去在处理大型包时,从你将包复制到的项目中识别 GUID 和包引用的 GUID,然后在代码中进行查找和替换。保存,关闭所有并重新打开。我警告不要这样做 如果没有正确完成,您可以轻松地完全破坏包装。这将完全由您自己承担风险,我会确保您在尝试之前拥有所有内容的备份副本。

如果您的包不是那么大,只需手动更新每个任务即可。