两种方式同步2 SQL Server数据库

时间:2019-05-10 13:50:56

标签: sql-server synchronization

我正在尝试从不同位置同步2个SQL Server数据库。这是方案。假设服务器A和B有10个麻袋。它们最初是同步的。它们并不总是保持连接,但是一旦它们建立起来,我希望它们彼此进行更改。如果在上午10点从服务器A取了2个麻袋,并且在上午10:10从服务器B取了4个麻袋,则在它们连接后,两台服务器都应该剩下4个麻袋。我需要按时间顺序提交更改,无论它们何时真正同步。因此,当它们连接时会发生什么,从10个麻袋中扣除2个麻袋并进行同步,因此意味着服务器A和B上剩下8个麻袋。在上午10:10,又从剩下的8个麻袋中扣除了4个麻袋,计数到4。这种设置可行吗?我尝试了“合并复制”,但是它不同步我希望它产生所需结果的方式。回到我使用合并复制的示例中,如果同步时间每15分钟发生一次,则在上午10点从服务器A取2个麻袋时,由于下一个同步时间是上午10:15,因此对其他服务器仍未进行更改。也意味着服务器B仍然有10个麻袋,服务器A仍然有8个麻袋。在上午10:15,仅考虑从服务器B取出的4个麻袋,两个服务器在上午10:15的最终计数为6。上午10:00的第一个更改将被忽略。如何实现所需的设置?谢谢。

1 个答案:

答案 0 :(得分:1)

我将asyncMiddleware放在跟踪每个数据库堆栈的表上,并且每次进行更改时,都会向带有时间戳记,更改和服务器的Triggers表中写入一条记录发生更改的位置,以及用于指示该记录是否已对帐的标志。然后,当数据库重新连接时,您选择所有未对帐记录并根据需要应用它们。因此,在您的情况下,您将有两条记录:

Synch

服务器重新连接时,服务器A会应用不属于它的所有更改,服务器B也会这样做。