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

Sql server 如何远程检查两个SQL数据行是否相同,而不在服务器之间发送所有数据?,sql-server,tsql,synchronization,Sql Server,Tsql,Synchronization,我正在构建一个API,允许远程系统将数百万行与我的源表同步(单向) 如何远程检查两个SQL数据行是否相同,而不在服务器之间发送所有数据?我曾考虑过使用最新更新的专栏,但担心有一天,有人可能会手动编辑一条记录来修复一个问题,然后系统将永远不同步 我知道checksum(*)选项,但这似乎可能存在(主要是理论上的)边缘情况,其中更新行的校验和可能与以前相同 我的想法是,我的API将提供一个ID(主键)列表,然后是一个“检查”值,远程系统可以使用该值找出需要添加或更新的记录。希望这是保持两个系统同步的

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

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

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


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

每个表都有一个rowversionrowversion和另一个RowVersion

从同步

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在同步之前更新,则需要确定主设备。

您研究过复制吗?这一切都是开箱即用的。您可能需要研究复制。主从。或者使用类似于Sorry的方法,但数据库系统不同,因此复制不是一个选项。另外,可能会有多个不同类型的“订阅者”。粘滞=恶意我实际上不理解代码示例后面的句子。