Sql-Server

為什麼我會收到“發布的初始快照尚不可用。”?

  • October 26, 2018

我們正在使用帶有可更新訂閱的事務複製。1 個發布者,1 個訂閱者。

SQL 複製在 3 月 6 日上午 10 點開始遇到約束錯誤,因為兩個不同辦公室的人員輸入的數據違反了唯一約束。完全預期。

但是,在 3 月 6 日下午 12:08,SQL 複製停止報告該錯誤,而是說:

“發布‘TheDB’的初始快照尚不可用。”

為什麼它會停止重試複製,而是開始拋出這個錯誤?現在我們需要重新生成快照。

  • 此時未執行任何數據庫備份或恢復
  • 幾個月前,當最初設置複製時,該快照已成功應用於訂閱者。
  • 3/6 12:07 的日誌中有一條消息說

$$ 000 $$執行作業 COTOPSVR\TheDB-TheDB-COTCPSVR\DB-3 的請求(來自使用者 CTOB\Administrator)被拒絕,因為該作業已根據使用者 sa 的請求執行

  • 沒有人在下午 12:06 手動啟動任何工作或做任何事情。

有任何想法嗎?我知道如何解決這個問題……我想防止這種情況再次發生。

使用基本事務複製有多種代理。

有用的 MSDN 文章

快照代理負責數據和模式的初始快照。這可以安排定期執行(我安排了每 12 小時執行一次)。

Log Reader Agent,它讀取事務日誌並將標記為要複製的日誌發送到分發伺服器。

最後,分發代理負責將快照和事務從分發者轉移到訂閱者。

您的錯誤告訴您它無法將標記為複制的事務應用到訂閱者,因為尚未應用初始快照(和/或任何後續快照)。您需要對未應用此快照的原因進行故障排除。它可能發生的原因有很多。

分發代理是否失去了對包含快照文件的目錄的權限?

訂閱者上是否有一些阻塞活動導致快照應用緩慢?

您是否通過同時將大型已發布數據庫中的所有文章推送給所有訂閱者來使分發者和/或訂閱者超載?

我懷疑您的訂閱被該錯誤卡住了,實際上並沒有複製任何新交易。此時訂閱落後於為該發布定義的事務保留期。然後訂閱將辨識出它需要的複制事務不再可用,因為它們已從分發數據庫中清除。

發生這種情況時,它將指示訂閱需要使用快照重新初始化。

引用自:https://dba.stackexchange.com/questions/36200