1
我在两个数据库中有两个具有相同模式的表。这两个数据库位于不同位置的不同服务器上。现在可以在任何两个数据库表中插入和更新数据。要求是将不同数据库中的两个表同步,以便它们始终具有更新的信息。SSIS 2012数据库中的表之间的数据同步2012
主键列在任一数据库表中都将是唯一的。
如何通过SSIS实现此目的?
请指导。
我在两个数据库中有两个具有相同模式的表。这两个数据库位于不同位置的不同服务器上。现在可以在任何两个数据库表中插入和更新数据。要求是将不同数据库中的两个表同步,以便它们始终具有更新的信息。SSIS 2012数据库中的表之间的数据同步2012
主键列在任一数据库表中都将是唯一的。
如何通过SSIS实现此目的?
请指导。
您可以通过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转换技术来实现这一点,我会用两个数据与2X Cache Connection Manager
作为我们的临时表流1和2.第一个将数据保存到缓存中,第二个从缓存加载到表中。
或
两个数据流。 Source
→Lookup
→Destination
。 执行查找来检查第二个表是否存在PK。如果对于记录Tbl_A,则在Tbl_B中不存在这样的PK,这意味着您必须将该行插入到Tbl_B中。 No Match Output
,将行导向Destination。