如何合并SSIS包文件?

Zom*_*Dev 9 version-control merge ssis dvcs

我想知道是否有人有任何关于合并SSIS的dtsx文件的建议.这是我看到的让合并变得困难的问题:

  • 它们是xml,已经很难合并了.
  • 它们可以嵌入C#脚本,在这种情况下,它们将同时具有C#源代码和dll文件的base64编码字符串.
  • 它们描述了包中的数据流以及IDE中元素的布局.

如果微软的任何人正在收听,那么通过使包中包含多个文件而不是一个文件来解决许多问题.一个dtsx可以是描述流的xml,描述布局的xml,一些.cs源文件和一些dll.但事实并非如此.让我想知道为什么有人使用dtsx.

一个非解决方案

我在网上看到的唯一解决方案是确保在编辑时锁定dtsx文件,这样只有一个用户可以进行更改.当你只谈论一个分支但是如果你在各个分支(或上帝禁止,DVCS)中使用dtsx的多个副本时,这种方法很好,那么在你做出改变的任何时候都没有可行的方法来锁定它们.除此之外不会真正解决问题,除非你还可以确保没有其他人改变它,然后你可以在任何地方合并它.

gra*_*oon 7

我建议不惜一切代价避免合并dtsx文件 - 这将是一个痛苦的世界!我通常开发SSIS项目的方法是将每个不同的工作分成一个单独的package/dtsx文件,然后从Master包中调用它们.这意味着团队中的不同人员可以在不同的包上工作而不会彼此重叠工作.这在源控制系统中非常有效.另一个优点是每个组件可以独立执行或测试.


Zus*_*kar 7

使用免费的Visual Studio外接程序BIDS Helper可以通过两种可能的方式帮助您解决困境.

  1. BIML:BIML是商业智能标记语言(BIML参考).您可以使用.biml文件生成SSIS包.BIML文件应该更好地与合并操作一起使用,因为它们的结构更加严格.虽然我还没有合并它们的经验,但我一直在使用BIML文件来创建比SSIS UI允许的更快的SSIS包.复制粘贴类似的数据流并仅更改唯一属性非常有用.

  2. Smart Diff:BIDS Helper还内置了Smart Diff功能,可帮助您比较SSIS包中的差异.它不会帮助自动合并,但它会删除布局信息并在显示差异之前对XML进行排序.这将显示两个SSIS包之间的实际功能差异.然后,您可以使用该信息手动合并更改.对于你对启示者答案的评论你的例子,你可以使用Smart Diff将你的SSIS版本1.0与1.0分支中的固定版本进行比较,然后你会看到将该修复手动应用到2.0分支所需的更改.