在本文中,我们将使用Merge Join Transformation在两个SQL表上执行SSIS右外连接。
在设计Package之前,让我们先看看我们要使用Merge Join Transformation在SSIS中执行右外连接的两个源表。
请参考左外连接文章以获得理解。同时,请参阅全外连接文章,了解如何使用Merge Join Transformation进行全连接。
数据库中的Employees表是

数据库中的 Department 表是

配置SSIS Merge Join Transformation中的右外连接
步骤1:将数据流任务从工具箱拖放到控制流区域,并将其重命名为“在SSIS中使用Merge Join Transformation执行右外连接”

双击数据流任务将带我们进入数据流区域。
步骤2:从工具箱将两个OLE DB源拖放到数据流区域。接下来,双击数据流区域中的第一个OLE DB源,将打开连接管理器设置,并提供选择表的选项。

从上面的截图可以看出,我们从数据库中选择了[Employees]表
步骤3:点击列选项卡以验证列。在此选项卡中,我们可以取消选中不需要的列。

步骤4:双击第二个OLE DB源以配置第二个表以执行Merge Join。在这里,我们选择了[Department]表

步骤5:重复步骤3

提示:Merge Join Transformation在没有对输入行进行排序的情况下将无法工作。因此,在应用SSIS右外连接之前,Sort Transformation是必需的。
步骤6:将两个Sort Transformation从工具箱拖放到数据流区域。接下来,将OLE DB源的输出箭头连接到Sort Transformation。

步骤7:双击Sort Transformation进行配置。勾选我们要排序的列,并且不要忘记“通过”剩余的列。如果您忘记选择“通过”,那么它们将不会出现在输出列中。
从源数据来看,DepartID是Employees和Department表之间的连接键。因此,我们将Employees表按DepartID升序排序。

双击Sort Transformation 1,并按id列升序对Department表进行排序。

步骤8:现在将Merge Join Transformation拖放到数据流区域,以便在排序后的表上执行SSIS右外连接。
当您将Sort Transformation的输出箭头拖入Merge Join Transformation时,将出现一个“输入输出选择”窗口,用于选择它是Merge Join左输入还是右输入。

在这里,我们为Employees表选择了Merge Join左输入。点击OK,然后拖放Sort Transformation 1的输出箭头。此时,Merge Join右输入已通过智能选定。
步骤9:双击Merge Join Transformation将打开Merge Join Transformation Editor进行配置。
Join Type提供了一个下拉列表,用于选择您要在源数据上执行的连接类型(例如Inner Join、Left Outer和Full Outer)。在此示例中,尽管我们执行的是右外连接,但SSIS Merge Join Transformation Editor没有该选项。因此,目前,我们从Join Type选项中选择了Left Outer Jon选项。

从上面的截图可以看出,Employees和Department表都使用DepartID和id列进行连接。因此,通过拖动箭头将它们选择为Join键。
现在,通过勾选列名来选择您想发送到目标表的列(通过列)。

从上图可以看出,我们选择了[First Name]、[Last Name]和[Department Name]列作为输出列。为了执行SSIS右外连接,我们必须交换表,因此请点击Swap Inputs按钮。这样,左表成为右表,右表成为左表。

这意味着SSIS右外连接显示所有[Department Name]列的行以及Employees表中的[First Name]、[Last Name]列的匹配行,其中DepartID与任何id列数据完全相等。所有不匹配的[First Name]、[Last Name]列的行都视为NULL。
步骤10:将OLE DB目标拖放到数据流区域,并双击它以配置目标服务器和目标表以存储Merge Join Transformation的输出。

在这里,我们选择了数据库和[Right Outer Join Using Merge Join Transformation]作为目标表
步骤 11:单击列选项卡以检查输入列是否与目标列匹配。如果不匹配,请将相应的列分配给目标列。

我们已经完成了“使用Merge Join Transformation执行SSIS右外连接”包的设计。让我们执行SSIS右外连接包。

现在让我们打开Management studio并从表中选择列。
