我昨天工作了一整天试图背出一个不正确的连接字符串的影响,在我的XML配置文件。 我通过每一个包就去了,删除错误的连接管理器,并用正确的服务器名称重新添加。 每次我这样做我明确地删除它更新了配置,然后重新添加具有覆盖选项它。 但后来我做向上提拉父包,它使用了不同的XML配置,其再次更新连接管理器错误的服务器名称的可怕的错误。
我把配置了父包又开始固定子包。 有固定的子包,我打电话给他们一个从它现在的XML配置自由父。 我真的很惊讶和失望地看到,它又有了在连接错误的服务器。
这是怎么发生的?
我还通过写字板注意到++的配置文件被更新。 我的假设是,当父母的配置更新的连接管理器,SSIS 自动更新现予以更正配置文件 ,并再次打破了它。
不SSIS真正自动更新配置文件时,它的成分发生变化? 是不是真的双向的这样吗? 如果是的话它完全混乱的行为 - 就像一个乒乓球,还是在堤坝把手指。 我正在准备建议,我们从来没有使用XML配置!!
更新:我错了。 见下面我的意见。
所以,我认为你有一个(可能是两个)的基本误解在SSIS工作配置如何。
用于制造连接管理器配置是标准的过程:
- 创建连接管理器,它指向BIDS本地的/ dev连接。
- 创建连接管理器的ConnectionString,则服务器名和数据库名称属性一个配置。 (如果它是一个文件,文件路径添加等)
- 在随后的包,只需要创建一个相同的连接管理器,添加配置,它指向现有的配置文件,然后选择“重用现有......”( 不是“覆盖”,即抛出你在步骤2中所做的所有工作。 )
- 部署包出去服务器和XML文件到服务器上相同的本地位置。
- 修改XML文件的服务器上指向该服务器的正确的数据库连接(开发,分期,生产等)
- 当您在服务器上运行包时,它会使用XML文件在运行时和运行时使用服务器的各个数据库。
- 这一点是可选:我们实际使用的每个数据源一个XML文件,并明确指定的连接管理器。 这意味着通过命名,我们所有的包这就需要用到某个数据库被击中的确切相同的数据库我们的连接管理器的约定,我们可以“保证”。 我们存储在项目层面,这些数据源和刚刚创建数据源新建连接,然后用匹配的名称添加配置,“重用现有”,点击确定,和你所有的设置。
所以,一个误会你有被删除的连接管理器。 配置文件不“更新”连接管理器。 连接管理器的属性设置在设计时并不管你看到BIDS当您双击它。 这些被硬编码到包(查看代码,看看自己),并只能在连接管理器编辑器本身进行更改。 因此,有没有这样的事,作为一个“故障”连接管理器,并删除它没有任何意义 - 只要当你得到一个“成功”当你测试在编辑器中作为连接,该连接管理器是好去。
你的第二个误区是配置文件是如何工作的。 一个配置文件仅与在运行时其自己的值的包执行替换性质。 它不会修改程序包都没有。 相反,SSIS包本身永远不会修改配置文件。 这是我相信什么事情发生了-这只能使用BIDS过程之外,或者通过BIDS配置编辑器,文本编辑器来完成。
我不能用一种通用的时间表的确切地告诉你所提供的,但您使用覆盖选项意味着你基本上允许发生的最后一个“双赢”设置您的所有文件将使用值的权取其配置编辑对于特定的连接。
无论如何,我会(因为你可能已经猜到)完全推荐使用XML配置,因为它们是(或曾经是,我想!)非常简单,在我看来,一个多层次的SSIS环境的最简单的部署选项。
文章来源: ssis xml configurations - configs overwrite packages - does ssis change config without you telling it to?