我正在构建一个API,允许远程系统将数百万行与我的源表同步(单向)。
如何远程检查两个SQL数据行是否相同,而不是在服务器之间发送所有数据?我考虑使用LastUpdated专栏,但担心有一天,有人可能会手动编辑记录来解决问题,系统将永远不同步。
我知道checksum(*)
选项,但似乎可能存在(主要是理论上)边缘情况,其中更新行的校验和可能与以前相同。
我的想法是,我的API将提供ID列表(主键),然后是“check”值,远程系统可以使用该值来查找需要添加或更新的记录。希望这是保持两个系统同步的合理方法,但我找不到任何“最佳实践”类型的文章。
答案 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在同步之前更新则需要确定主。