ssis xml配置 - 配置覆盖软件包 - ssis更改配置而不告诉它?

时间:2013-01-26 10:08:27

标签: sql-server ssis

昨天我整天都在努力想要在我的XML配置文件中退出错误连接字符串的影响。我浏览了每个软件包,删除了有故障的连接管理器,并使用正确的服务器名称重新添加它。每次我这样做,我通过删除它显然更新配置,然后使用覆盖选项重新添加它。但后来我犯了一个可怕的错误,就是拉起父包,它使用了一个不同的xml配置,它再次将连接管理器更新为错误的服务器名。

我将配置拉出父包并开始再次修复子包。修复了子包,我从其现在的xml config free parent中调用了其中一个。看到它在连接中再次出现错误的服务器,我感到非常震惊和失望。

怎么会发生这种情况?

我还通过wordpad ++注意到配置文件已更新。我的假设是,当父母的配置更新连接管理器时,SSIS 会自动更新现在更正的配置文件并再次破坏它。

当SSIS的组件发生变化时,SSIS会自动更新配置文件吗?这是真的双向吗?如果是这样的话,那就是完全混乱的行为 - 比如乒乓球,或者把手指放在堤坝上。我准备建议我们从不使用XML配置!!

1 个答案:

答案 0 :(得分:0)

更新:我错了。请参阅下面的评论。

所以我认为你对SSIS的配置工作有一个(可能是两个)基本的误解。

使连接管理器可配置的标准过程是:

  1. 创建连接管理器,将其指向BIDS中的本地/ dev连接。
  2. 为连接管理器的ConnectionString,ServerName和DatabaseName属性创建一个配置。 (如果是文件,请添加filePath等)
  3. 在后续软件包中,只需创建相同的连接管理器,添加配置,将其指向现有配置文件,然后选择“重用现有...”( not“Overwrite”,即抛出你在步骤2中所做的所有工作。)
  4. 将软件包部署到服务器和XML文件到服务器上的同一本地位置。
  5. 修改服务器上的XML文件以指向该服务器的正确数据库连接(开发,登台,制作等)
  6. 当您在该服务器上运行该程序包时,它将在运行时使用该XML文件,并在运行时使用服务器的相应数据库。
  7. 完全可选:我们实际上每个数据源使用一个XML文件,并明确命名为连接管理器。这意味着我们可以通过连接管理器的命名约定来“保证”我们所有需要使用某个数据库的软件包都会访问完全相同的数据库。我们在项目级别存储这些数据源,只需从数据源创建新连接,然后添加具有匹配名称的配置,“重用现有”,单击“确定”,然后全部设置。
  8. 所以有一个误解就是删除连接管理器。配置文件不“更新”连接管理器。连接管理器的属性在设计时设置为 ,是您在BIDS中双击它时看到的内容。它们被硬编码到包中(查看代码并亲自查看),并且只能在连接管理器编辑器本身中进行更改。所以没有“错误的”连接管理器,没有必要删除它 - 只要当你在编辑器中测试连接时获得“成功”时,连接管理器就可以了。

    您的第二个误解是配置文件的工作方式。配置文件仅将执行包中的属性替换为其在运行时的值。它根本不会修改包。相反,SSIS包本身永远不会修改配置文件。这只能通过BIDS配置编辑器使用BIDS流程之外的文本编辑器来完成 - 这就是我相信发生的事情。

    我无法确切地说明您提供的一般时间表的类型,但是您使用“覆盖”选项表明您基本上允许最后发生的任何配置编辑“赢得”设置所有值的权限文件将用于该特定连接。

    无论如何,我会(正如你可能猜到的那样)完全建议使用XML配置,因为它们(或者我认为!)非常简单,在我看来是多层SSIS环境中最简单的部署选项。