2012-03-08 78 views
1

我面临的情况是,我已经构建了用于整合多个数据库中的表的SSIS包,但有时DBA会手动删除源表中的记录。如果记录被删除,是否有任何方法可以检测统一表格?我知道我可以在包运行之前每次截断统一表,但是我想知道是否还有其他方法?SSIS检查记录是否被删除

+0

嗨,你能给更多的细节?您阅读DB1,DB2和DB3并在合并表上插入数据,对吧?在源数据库上删除有什么问题?它会破坏什么?还是仅仅是缺少的记录? – Diego 2012-03-08 13:20:52

+0

您的统一表是否有一种机制将一行唯一地绑定回源系统? – billinkc 2012-03-08 15:49:44

+0

@Diego:如果来自DB1的记录被删除,那么它仍然存在于统一表中。 – 2012-03-09 09:26:16

回答

0

我想几种解决方案,但我知道现在的大问题是,你没有一个统一的数据源,所以记录可能不是一个,而是存在于存在B,因此你不能删除它。

所以我的建议是,插入后,从所有来源运行选择不同(ID),并将它们放在一个结构(表,临时表,视图,UNION,任何..),并从这个运行合并只用一个WHEN NOT MATCHED THEN DELETE就可以在ID上输入目的地。