我有两个供应商每晚生成的数据集。两个表都不包含主键,但行是唯一的。如果没有主键,是否有办法使用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
有没有人遇到类似的情况?在没有主键的情况下,我似乎找不到确定是否已插入或更新(或删除或更新)行的方法。有什么想法吗?
感谢您的考虑。
答案 0 :(得分:0)
如果我试图留在SSIS中,我会使用Slowly Changing Dimension组件来满足此要求。在选择TABLE2作为目标表后,我将指定所有列形成业务键。
这将生成New行和Updated行的输出,包括OLE DB Destination和OLE DB Command组件。
我会在TABLE2中添加另一列来标识“已删除”行,例如LastUpdateDateTime。我会添加一个下游的执行SQL任务来删除或更新这些行。
所有这一切,我可能会倾向于使用SQL MERGE解决方案,因为它更灵活,更完整。