如何远程检查两个SQL数据行是否相同,而不是在服务器之间发送所有数据?

时间:2018-06-05 16:39:39

标签: sql-server tsql synchronization

我正在构建一个API,允许远程系统将数百万行与我的源表同步(单向)。

如何远程检查两个SQL数据行是否相同,而不是在服务器之间发送所有数据?我考虑使用LastUpdated专栏,但担心有一天,有人可能会手动编辑记录来解决问题,系统将永远不同步。

我知道checksum(*)选项,但似乎可能存在(主要是理论上)边缘情况,其中更新行的校验和可能与以前相同。

我的想法是,我的API将提供ID列表(主键),然后是“check”值,远程系统可以使用该值来查找需要添加或更新的记录。希望这是保持两个系统同步的合理方法,但我找不到任何“最佳实践”类型的文章。

1 个答案:

答案 0 :(得分:-1)

每个表都有rowversionrowversion和rowversionOther

来自同步

select b.id 
  from tableA a 
  join tableB b 
    on a.ID = b.ID 
   and b.rowversion != a.rowversionOther  

数据同步后需要更新b.rowversionOther = a.rowversion或者进入恶性循环。

如果a和b在同步之前更新则需要确定主。