ssis-确定没有主键的更新行

时间:2014-03-27 17:52:04

标签: ssis

我有两个供应商每晚生成的数据集。两个表都不包含主键,但行是唯一的。如果没有主键,是否有办法使用SSIS来确定哪些行已添加,更新或删除?我发现的所有信息似乎都指向需要主键。简单地对行进行编号是行不通的,因为表是每晚重建的。

所比较的表可能如下所示:

TABLE 1                         TABLE2
Name   Facility   Access         Name   Facility   Access
----   --------   ------         ----   --------   ------
Bob    NJ         Full SA        Bob    NJ         Full SA
Bob    NJ         Full AB        Bob    NJ         Full DS
Bob    GA         Full SA        Bob    GA         Full SA
Bob    GA         Full AB        Bob    FL         Full SA
Bob    CA         Full AA        Janet  CA         Full AA

有没有人遇到类似的情况?在没有主键的情况下,我似乎找不到确定是否已插入或更新(或删除或更新)行的方法。有什么想法吗?

感谢您的考虑。

1 个答案:

答案 0 :(得分:0)

如果我试图留在SSIS中,我会使用Slowly Changing Dimension组件来满足此要求。在选择TABLE2作为目标表后,我将指定所有列形成业务键。

这将生成New行和Updated行的输出,包括OLE DB Destination和OLE DB Command组件。

我会在TABLE2中添加另一列来标识“已删除”行,例如LastUpdateDateTime。我会添加一个下游的执行SQL任务来删除或更新这些行。

所有这一切,我可能会倾向于使用SQL MERGE解决方案,因为它更灵活,更完整。