2013-09-22 43 views
1

我在两个数据库中有两个具有相同模式的表。这两个数据库位于不同位置的不同服务器上。现在可以在任何两个数据库表中插入和更新数据。要求是将不同数据库中的两个表同步,以便它们始终具有更新的信息。SSIS 2012数据库中的表之间的数据同步2012

主键列在任一数据库表中都将是唯一的。

如何通过SSIS实现此目的?

请指导。

回答

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转换技术来实现这一点,我会用两个数据与2X Cache Connection Manager作为我们的临时表流1和2.第一个将数据保存到缓存中,第二个从缓存加载到表中。

两个数据流。 SourceLookupDestination。 执行查找来检查第二个表是否存在PK。如果对于记录Tbl_A,则在Tbl_B中不存在这样的PK,这意味着您必须将该行插入到Tbl_B中。 No Match Output,将行导向Destination。