合并联接转换

更新日期: 2005 年 12 月 5 日

合并联接转换提供了一个输出,该输出是通过使用 FULL、LEFT 或 INNER 联接将两个已排序数据集进行联接而生成的。例如,可使用 LEFT 联接来联接包含产品信息的表与列出产品的制造国家/地区的表。结果是一个列出所有产品及其产地国家/地区的表。有关详细信息,请参阅使用联接

可以按照下列方法来配置合并联接转换:

  • 指定联接是 FULL、LEFT 联接,还是 INNER 联接。
  • 指定联接所使用的列。
  • 指定转换是否将空值处理为等于其他空值。
    ms141775.note(zh-cn,SQL.90).gif注意:
    如果不将空值处理为相等的值,则转换将如同 SQL Server 数据库引擎那样处理空值。

合并联接转换要求两个输入都是已排序的,并且要求被联接的列具有匹配的元数据。例如,不能将具有数值数据类型的列和具有字符数据类型的列相联接。如果数据为字符串数据类型,则第二个输入中列的长度必须小于或等于所合并的第一个输入中列的长度。

可以通过为源的输出或其他上游数据流组件设置排序选项,或通过在合并联接转换前将排序转换插入到数据流的方式对数据进行排序。如果排序选项指示数据是已排序的,而数据实际上不是已排序的,则合并联接操作可能会出现意外结果。

此转换有两个输入和一个输出。它不支持错误输出。

缓冲区中止

合并联接转换包括 MaxBuffersPerInput 属性,该属性指定可以同时为每个输入处于活动状态的最大缓冲区数。可以使用此属性来优化转换缓冲区所使用的内存数量,并由此优化转换的性能。缓冲区数越大,转换所使用的内存越多,性能越好。MaxBuffersPerInput 的默认值是 5,这是适合大多数工作情况的缓冲区数。若要优化性能,可能需要尝试使用稍有不同的缓冲区数,例如,4 或 6。如果可能,应当避免使用非常小的缓冲区数。例如,将 MaxBuffersPerInput 设置为 1 而不是 5,则可能对性能造成很大影响。还有,不应当将 MaxBuffersPerInput 设置为 0。此值表示没有中止发生,并且由于数据负载和可用内存数量,包可能无法完成。

若要避免死锁,合并联接转换可能临时增加它所使用的缓冲区数,使其超过 MaxBuffersPerInput 的值。死锁条件消除之后,MaxBuffersPerInput 将返回它的配置值。

配置合并联接转换

可以通过 SSIS 设计器或以编程方式来设置属性。

有关可在**“合并联接转换编辑器”**对话框中设置的属性的详细信息,请参阅合并联接转换编辑器

有关可以编程方式设置的属性的详细信息,请单击以下主题之一:

有关如何设置属性的详细信息,请单击下列主题之一:

请参阅

概念

合并转换
Union All 转换
Integration Services 转换

帮助和信息

获取 SQL Server 2005 帮助

更改历史记录

版本 历史记录

2005 年 12 月 5 日

新增内容:
  • 描述了 MaxBuffersPerInput 属性在转换性能中的角色。