更新:我错了。请参阅下面的评论。
所以我认为你对 SSIS 中的配置如何工作有一个(可能有两个)基本的误解。
使连接管理器可配置的标准过程是:
- 创建连接管理器,将其指向您在 BIDS 中的本地/开发连接。
- 为连接管理器的 ConnectionString、ServerName 和 DatabaseName 属性创建一个配置。(如果是文件,添加filePath等)
- 在随后的包中,只需创建相同的连接管理器,添加配置,将其指向您现有的配置文件,然后选择“Reuse Existing ...”(而不是“Overwrite”,这会丢弃您在步骤 2 中所做的所有工作。 )
- 将包部署到服务器,并将 XML 文件部署到服务器上的同一本地位置。
- 修改服务器上的 XML 文件以指向该服务器的正确数据库连接(开发、登台、生产等)
- 当您在该服务器上运行包时,它将在运行时使用该 XML 文件,并在运行时使用服务器各自的数据库。
- 完全可选:我们实际上为每个数据源使用一个 XML 文件并明确命名连接管理器。这意味着我们可以通过连接管理器的命名约定“保证”我们所有需要使用某个数据库的包都访问完全相同的数据库。我们将这些数据源存储在项目级别,然后从数据源创建新连接,然后添加具有匹配名称的配置,“重用现有”,点击确定,一切就绪。
所以你有一个误解是删除连接管理器。配置文件不会“更新”连接管理器。连接管理器的属性是在设计时设置的,并且是您在 BIDS 中双击它时看到的任何内容。这些被硬编码到包中(查看代码并自己查看)并且只能在连接管理器编辑器本身中进行更改。因此,没有“故障”连接管理器之类的东西,删除它也没有任何意义——只要在编辑器中测试连接时获得“成功”,该连接管理器就可以使用。
您的第二个误解是配置文件是如何工作的。配置文件只是在运行时用自己的值替换包执行中的属性。它根本不修改包。相反,SSIS 包本身永远不会修改配置文件。这只能使用 BIDS 流程之外的文本编辑器或通过 BIDS 配置编辑器来完成 - 我相信这是发生的。
我无法通过您提供的一般时间表来准确判断,但您使用“覆盖”选项表明您基本上允许最后发生的任何配置编辑“赢得”设置所有文件将使用的值的特权对于那个特定的连接。
无论如何,我会(正如您可能猜到的那样)完全推荐使用 XML 配置,因为它们(或者曾经是,我认为!)非常简单,并且在我看来是多层 SSIS 环境最简单的部署选项。