我在两个具有相同架构的数据库中有两个表。这两个数据库位于不同位置的不同服务器上。现在可以在两个数据库表中的任何一个中插入和更新数据。要求是同步不同数据库中的两个表,以便它们始终具有更新的信息。
主键列在任一数据库表中始终是唯一的。
如何通过SSIS实现这一目标?
请指导。
答案 0 :(得分:0)
您可以使用2 Script Tasks
来实现它。在第一个:
-- what exists in A and not in B
SELECT * INTO DB1.temp.TBL_A_except FROM
(
SELECT pk FROM DB1.schema1.TBL_A
EXCEPT
SELECT pk FROM DB2.schema2.TBL_B
);
-- what exists in B and not in A
SELECT * INTO DB2.temp.TBL_B_except FROM
(
SELECT pk FROM DB2.schema2.TBL_B
EXCEPT
SELECT pk FROM DB1.schema1.TBL_A
);
第二个:
INSERT INTO DB2.schema2.TBL_B
SELECT * FROM DB1.temp.TBL_A_except;
INSERT INTO DB1.schema1.TBL_A
SELECT * FROM DB2.schema2.TBL_B_except;
DROP TABLE DB1.temp.TBL_A_except;
DROP TABLE DB2.schema2.TBL_B;
如果真的希望通过SSIS转换技术实现这一目标,我将使用2个Cache Connection Manager
的两个数据流作为临时表1和2.首先将数据保存到缓存,第二个从缓存加载到表中。
或
两个数据流。 Source
- > Lookup
- > Destination
。
实现查找以检查第二个表是否存在PK。如果对于记录Tbl_A,在Tbl_B中没有这样的PK,则意味着您必须将该行插入到Tbl_B中。 No Match Output
,将行定向到目的地。