如何合并SSIS包文件?

时间:2011-03-29 05:10:36

标签: version-control merge dvcs ssis

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

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

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

非解决方案

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

5 个答案:

答案 0 :(得分:7)

使用免费的Visual Studio加载项BIDS Helper可能会以两种可能的方式帮助您解决困境。

  1. BIML:BIML是商业智能标记语言(BIML Reference)。您可以使用.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分支所需的更改。 / p>

答案 1 :(得分:6)

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

答案 2 :(得分:0)

我们合并工作的唯一方法是打开两个包,从一个包复制所有内容,粘贴到另一个包中,然后编译每个脚本任务,如果它们有冲突。

建议使用较小的软件包,因为它们响应速度更快。

答案 3 :(得分:0)

如果您需要真正的合并功能,则必须手动编写软件包代码。由于XML中的所有布线(沿袭ID等)和设计器细节,无法在不破坏数据流或布局的情况下合并文件之间的更改。

答案 4 :(得分:0)

看看BIML变形金刚。 BIML(商业智能标记语言)是一种更简单的编辑和控制SSIS包的方法。只需下载BIDS帮助程序并查看本文。

http://bimlscript.com/Walkthrough/Details/68

变形金刚还允许您将相同的更改应用于一组SSIS包,而不仅仅是手动一次。

干杯