複製中發佈服務器和訂閱服務器內容不一致的解決辦法

 

    在事務複製的過程當中,有時候會因爲各類各樣的緣由致使發佈服務器和訂閱服務器的數據不一致,形成這種狀況每每是因爲如下幾種緣由之一: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.更新訂閱端後,訂閱經過驗證

相關文章
相關標籤/搜索