【问题标题】:How do I merge SSIS package files?如何合并 SSIS 包文件?
【发布时间】:2011-03-29 05:10:36
【问题描述】:

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

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

如果 Microsoft 的任何人在听,很多问题都可以通过将软件包制作成多个文件而不是一个文件来解决。一个 dtsx 可以是描述流程的 xml、描述布局的 xml、一些 .cs 源文件和一些 dll。但事实并非如此。 让我想知道为什么有人使用 dtsx。

无解

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

【问题讨论】:

    标签: version-control merge dvcs ssis


    【解决方案1】:

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

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

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

    【讨论】:

    • 我真的不再做 SSIS 的事情了。但这似乎是一个不错的答案。 BIML 的东西看起来更容易区分(就像任何 XML 文件一样简单)。
    【解决方案2】:

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

    【讨论】:

    • 我们做了一些拆分成更小的包,但我们的大多数包都做了非常具体的事情,不适合将它们拆分成更小的部分。即便如此,这只适用于防止人们在同一分支中踩到彼此的脚趾。假设我们有一些包可以导入特殊的文件格式。我们在我们软件的 1.0 版中发现了一个错误并在该 dtsx 中修复它。但是在 2.0 分支中 import.dtsx 的部分已被更改以获得更好的性能或其他东西。这两个更改必须合并,否则我们将在 2.0 发布时再次遇到该错误。
    【解决方案3】:

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

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

    【讨论】:

    • 将一个dtsx(我们称之为源)的内容复制到另一个(我们称之为目标)并且保存不是合并。那只是丢弃目标中已更改的任何内容。如果源和目标都已更改,您希望最终结果是两者更改的组合。
    • 我在想这样合并,合并文件 a 和 b - 不是以源代码控制系统方式:|忽略我的评论
    【解决方案4】:

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

    【讨论】:

    • 我也是这么想的。你不能合并它们。我会将其标记为答案,但这实际上只是在确认问题。我不知道有没有答案
    【解决方案5】:

    看看 BIML 转换器。 BIML(商业智能标记语言)是一种更容易编辑和控制 SSIS 包的方法。只需下载 BIDS 帮助程序并查看这篇文章。

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

    转换器还允许您将相同的更改应用于一组 SSIS 包,而不仅仅是手动一次。

    干杯

    【讨论】:

    • 目前仅在 Mist 中提供的功能。
    猜你喜欢
    • 1970-01-01
    • 2010-12-22
    • 2013-09-30
    • 1970-01-01
    • 2020-12-06
    • 1970-01-01
    • 2017-06-09
    • 1970-01-01
    • 2015-09-12
    相关资源
    最近更新 更多