SSIS 2012中2个数据库中的表之间的数据同步

时间:2013-09-22 04:55:13

标签: sql ssis sql-server-2008-r2 sql-server-2012

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

主键列在任一数据库表中始终是唯一的。

如何通过SSIS实现这一目标?

请指导。

1 个答案:

答案 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,将行定向到目的地。