SSIS在不同服务器上同步两个表

时间:2016-12-20 18:33:47

标签: sql-server ssis

我是SSIS的首发。如果您有任何指导,请具体说明。谢谢。 我试图在两个不同的服务器上同步两个表。

服务器A上的表A(60k数据)和服务器B上的表B(60k数据)。 主要有三件事:

  1. 在表A中添加新记录,而不是表B.
  2. 更新表A和B都有的记录并更新它们。
  3. 删除表A中没有的记录,但是在B
  4. 两个表中都没有主键。但是两列一起可以帮助找到某些记录(每个表都有重复,但不是很多)

    http://www.rad.pasfu.com/index.php?/archives/150-Insert,-Update,-and-Delete-Destination-table-with-SSIS.html

    我试图用这个家伙的方法搞清楚,但失败了。我在两个样本表上尝试了这种方式,它有几行数据,成功。

    在实际表格中,我将A列和B列设置为SortKeyPosition 1和2,因为我必须一起使用它们。

    合并加入时的全外连接

    新记录的条件分割如下:

    (!ISNULL(S_Column A)&&!ISNULL(S_Column B))&& (ISNULL([D_Column A])&& ISNULL(D_Column B))

    删除记录为:

    (ISNULL(S_Column A)&& ISNULL(S_Column B))&& (!ISNULL([D_Column A])&&!ISNULL(D_Column B))

    结果,我获得了34k的新记录数据和0个删除记录。 我已经在SQL上测试了实际结果,1000+用于新记录,600多用于删除新记录。需要更新60k左右。我不知道是什么导致了这个问题,以及如何解决它。

    更新:我个人使用OLE DB命令编写SQL命令,在条件拆分后替换所有数据(一些数据不需要更新)(假设我之前正在写)。我正在寻找更好的更新解决方案。

    希望得到帮助!再次感谢您和早日的快乐假期!

1 个答案:

答案 0 :(得分:0)

请尝试以下步骤:

COPY table from ServerA to a working table on ServerB
Handle Duplicates by theoretical index
    Are these 'duplicates' differentiatable by adding additional fields? 
        If so, add those fields to the indexing.
        If not, assume that all of these rows on ServerB will end up looking like one row from ServerA
DELETE rows from B that do not match rows from A
UPDATE rows in B where the keys match in A but data differs (it is worthwhile to compare the data and only update if the data is actually different).
INSERT the new rows from A
DROP or TRUNCATE the working table.