复制中发布服务器和订阅服务器内容不一致的解决办法

 

    在事务复制的过程当中,有时候会因为各类各样的缘由致使发布服务器和订阅服务器的数据不一致,形成这种状况每每是因为如下几种缘由之一:sql

  • 某个Agent运行出现错误或者Agent进程崩溃
  • 比较大型的发布是使用了备份还原,而不是快照复制初始化,而备份后发布端修改了数据
  • 非Distribution Agent线程修改了订阅服务器的数据

 

    上面三种状况是最多见的致使发布端和订阅端数据不一致的缘由,其中第三种缘由每每出现的最多,在这种状况下,一般来讲,能够经过从新初始化订阅来解决该问题,但对于比较大的订阅来讲,或者发布和订阅之间相隔太远而形成网络宽带的问题,则从新初始化订阅就不是那么吸引人的提案了。所以经过数据对比分析工具来比对有差别的数据,并仅仅更新那些和源不一样步的数据则是更好的选择。数据库

    这类工具包括相似Redgate和xSql的数据对比工具,也可使用Visual Studio自带的数据对比工具进行,下面我经过一个简单的Demo来展现如何解决该类问题。服务器

 

DEMO

    目前我已经创建好一个发布服务器和订阅服务器,发布服务器CAREYSON-SQL发布了示例数据库AdventureWorks的SalesOrderDetail整张表,订阅服务器sqlazur\sql2012订阅了该表,如图1所示。网络

1

图1.基本的复制信息工具

 

   此时,我在订阅服务器人为的删除数据,形成发布服务器和订阅服务器的数据不一致,如图2所示。线程

  2

图2.在订阅端手动删除数据,形成不一致3d

 

   咱们再来服务端验证订阅,如图3所示。blog

    3

    图3.验证订阅进程

 

    在复制监视器中,能够看到,在订阅服务器删除的一条数据致使了验证订阅出现不一样步的提示,如图4所示。事务

  4

   图4.订阅已经再也不同步

 

   为了修正该问题,咱们能够经过Visual Studio的数据库项目来创建数据对比分析任务来找到缺失的数据,从而根据发布端更新订阅端,如图5所示。

    5

图5.找出被删除的数据

 

而后咱们点击"更新目标",则被删除的数据会由发布端同步到订阅端。如图6所示。

6

图6.目标数据库已经更新

 

咱们再次进行验证订阅,显示已经经过订阅,如图7所示。

7

图7.更新订阅端后,订阅经过验证

相关文章
相关标签/搜索