双向复制更新记录

时间:2009-10-07 08:34:00

标签: sql replication sql-update bidirectional

我想向您介绍与SQL Server 2005双向复制相关的问题。 我需要什么? 我的团队负责人希望使用两个数据库之间的双向复制来解决我们的一个问题,每个数据库由不同的应用程序使用。一个应用程序在表A中创建记录,更改应该复制到第二个数据库到表A的副本。当第二个服务器上的数据发生更改时,那些更改必须传播回第一个服务器。 我试图在一台运行SQL Server 2005的服务器上的两个数据库之间实现双向事务复制。我已设法使用脚本,已建立的2个发布和2个具有环回检测的只读订阅来设置它。创建分发数据库,​​启用两个数据库上的发布。经销商和出版商都已上架。我们正在使用一些规则来控制哪些记录将被复制,因此我们需要在复制期间调用我们的自定义存储过程。因此,文章设置为使用更新,插入和删除自定义存储过程。

到目前为止一切顺利,但是?

一切正常,更改正在复制,直到同时或在复制更改之前对这两个表进行更新(大约需要3-6秒)。然后两个记录都以不同的值结束。

UPDATE db1.dbo.TestTable SET Col = 4 WHERE ID = 1
UPDATE db2.dbo.TestTable SET Col = 5 WHERE ID = 1

结果:

db1.dbo.TestTable COL = 5

db2.dbo.TestTable COL = 4

但我们希望最后一次改变赢得复制。拜托,有办法解决我的问题吗?如何在两个记录中确保相同的值?或者是否比这种复制更容易解决?

我可以提供我正在使用的示例复制脚本 我很期待你的想法,
米雷克

1 个答案:

答案 0 :(得分:0)

我认为在两个表上添加dateUpdated字段可能有所帮助。这种方式在复制代码中,只有当dateUpdated大于已存储的记录时才会更新记录。

dateUpdated字段显然会存储原始记录更新时的日期时间,而不是执行复制时的日期时间