欢迎光临
我们一直在努力

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

 

    在事务复制的过程中,有时候会由于各种各样的原因导致发布服务器订阅服务器的数据不一致,造成这种情况往往是由于以下几种原因之一:

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

 

    上面三种情况是最常见的导致发布端和订阅端数据不一致的原因,其中第三种原因往往出现的最多,在这种情况下,通常来说,可以通过重新初始化订阅来解决该问题,但对于比较大的订阅来说,或者发布和订阅之间相隔太远而造成网络宽带的问题,则重新初始化订阅就不是那么吸引人的提案了。因此通过数据对比分析工具来比对有差异的数据,并仅仅更新那些和源不同步的数据则是更好的选择。

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

 

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

图1.基本的复制信息

 

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

 

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

 

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

   

    图3.验证订阅

 

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

 

   图4.订阅已经不再同步

 

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

   

图5.找出被删除的数据

 

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

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

 

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

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

  • 海报
海报图正在生成中...
赞(0) 打赏
声明:
1、本博客不从事任何主机及服务器租赁业务,不参与任何交易,也绝非中介。博客内容仅记录博主个人感兴趣的服务器测评结果及一些服务器相关的优惠活动,信息均摘自网络或来自服务商主动提供;所以对本博客提及的内容不作直接、间接、法定、约定的保证,博客内容也不具备任何参考价值及引导作用,访问者需自行甄别。
2、访问本博客请务必遵守有关互联网的相关法律、规定与规则;不能利用本博客所提及的内容从事任何违法、违规操作;否则造成的一切后果由访问者自行承担。
3、未成年人及不能独立承担法律责任的个人及群体请勿访问本博客。
4、一旦您访问本博客,即表示您已经知晓并接受了以上声明通告。
文章名称:《复制中发布服务器和订阅服务器内容不一致的解决办法》
文章链接:https://www.456zj.com/6566.html
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址