1

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

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

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

请指导。

4

1 回答 1

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

或者

两个数据流。Source-> Lookup-> Destination。实施查找以检查第二个表是否存在 PK。如果记录 Tbl_A 在 Tbl_B 中没有这样的 PK,则意味着您必须将此行插入 Tbl_B。No Match Output, 将行定向到目的地。

于 2013-09-24T06:45:42.037 回答