备份/恢复方案中的同步框架

时间:2014-12-11 19:45:38

标签: sql-server backup restore microsoft-sync-framework

我正在使用Microsoft Sync Framework同步SQL Server数据库。

我的数据库经常恢复到早期版本,我需要保留父(同步过程的目标),更新。

现在,问题是我有一个孩子A,一个表T1,一个父亲B,一个表T1。

两个T1表都有一个表"记录"这些操作称为T1_tracking。首先,我同步T1,从A到B.然后,我将A中的数据库恢复到早期版本,并再次生成存储在T1中的数据(具有不同的信息)。因此,A中的T1_tracking与B中的T1_tracking完全不同,而Sync Framework告诉我它没有任何关系。

任何解决方案?请...谢谢!! ...

1 个答案:

答案 0 :(得分:0)

在还原数据库之后和同步之前,您需要运行PerformPostRestoreFixup。

作用域具有标识每个副本的副本。如果还原数据库,则将有两个具有相同ID的作用域,这将导致数据无法同步。

为了说明,让我们说T1与A同步,A记录上次与T1同步时的时间戳为1000.

然后将A还原到旧版本,当然该版本的时间戳值较小。你更新了恢复的数据库上的数据,但时间戳只会上升到让700说。

当你将它同步到T1时,T1说给我一些时间戳大于1000的变化(它在上次同步时记录的时间戳)。所以没有检测到任何变化。

Sync FX执行增量同步,例如,自上次同步以来发生的变化。它没有逐行比较来检查表之间的差异。

通过运行PerformPostRestoreFixup,您可以为还原的副本提供新的副本。旧的replicaid仍然在T1中被跟踪,因此它知道它已经同步了已恢复的db中的现有数据。但是,新的副本会反映出新的更改,因此当它同步时,T1不知道它(它在上次与新副本同步时没有任何时间戳记录),因此能够检测到同步更改。

P.S。,这是您的情景的简化说明,还有更多内容发生在幕后。