【发布时间】:2016-12-21 02:57:46
【问题描述】:
我是 SSIS 的初学者。如果您有任何指导,请具体说明。谢谢你。 我正在尝试在两个不同的服务器上同步两个表。
服务器 A 上的表 A(60k 数据)和服务器 B 上的表 B(60k 数据)。 主要有3点:
- 在表 A 而非表 B 中添加新记录。
- 更新表 A 和 B 都有的记录并更新它们。
- 删除不在表 A 中但在 B 中的记录
两个表中都没有主键。但是将两列放在一起主要可以帮助找到某些记录(每个表都有重复,但不是很多)
我试过用这个人的方法来解决,但失败了。我在两个包含几行数据的示例表上尝试了这种方式,成功了。
在真实表格上,我将 A 列和 B 列设置为 SortKeyPosition 1 和 2,因为我必须一起使用它们。
Merge Join 处的完全外连接
新记录的条件拆分如下:
(!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 命令替换条件拆分后的所有数据(某些数据不需要更新)(假设我之前正在写)。我也在寻找更好的更新解决方案。
希望得到帮助!再次感谢您,祝您早日节日快乐!
【问题讨论】:
-
如果源和目标没有任何作为实际通用唯一标识符的字段组合,您通常会遇到严重问题。此外,在服务器之间工作时,我经常发现将一个表显式复制到另一台服务器上的临时表会显着加快速度。
-
这不是SQL问题,而是物流问题。您必须有一种独特的方式来识别行,这就是唯一 ID 列的本质。即使您想出组合列,如果没有唯一索引,性能也会很差。
-
我使用 sql 命令从两个源表中选择不同的数据。看来我的问题出在合并连接部分。不知道原因,通过的数据不正确
标签: sql-server ssis