事務複製問題排查

前言

今天在搭建事務複製的時候,遇到一個比較棘手的問題。也是不常見的一個場景,分享出來供大家參考


正文

使用導出的腳本建立的發佈訂閱 。之前是一個發佈,訂閱到很多服務器,現在是想把這個發佈分開,所以建了很多發佈,在建上第一個發佈的時候,沒有問題。訂閱也正常。然後在建第二個發佈訂閱之後不久,就提示:
進程無法在“DATABASE”上執行“sp_replcmds”
因爲一個庫上的發佈都使用的是一個log reader ,當log reader 出現問題是,相關的發佈就都無法正常工作。
日誌讀取代理的詳細錯誤信息如下:

作業內的詳細錯誤信息:

-querytimeout 1800
-readbatchsize 500
-readbatchsize 500000
2017-12-11 02:43:46.831 狀態: 4096,代碼: 20024,文本: '初始化'。
2017-12-11 02:43:46.831 代理正在運行。請使用複製監視器查看此代理會話的詳細信息。
狀態: 0,代碼: 20011,文本: '進程無法在“DATABASE”上執行“sp_replcmds”。'。
2017-12-11 02:43:46.846 進程無法在“DATABASE”上執行“sp_replcmds”。
狀態: 0,代碼: 18764,文本: '篩選存儲過程 1470068423 的執行失敗。有關詳細信息,請參閱 SQL Server 錯誤日誌。'。
2017-12-11 02:43:46.846 狀態: 0,代碼: 18805,文本: '日誌掃描進程無法從日誌序列號(LSN) {00275656:00000cc6:0020} 構造複製命令。請備份發佈數據庫,然後與客戶支持服務部門聯繫。'。
2017-12-11 02:43:46.846 狀態: 0,代碼: 22037,文本: '進程無法在“DATABASE”上執行“sp_replcmds”。'。
嘗試解決辦法:
 EXEC sp_repldone @xactid =NULL, @xact_segno =NULL, @numtrans = 0, @time =0, @reset =1
EXEC sp_replflush
 重啓SQL Server Agent服務。

解決

以上辦法,都沒有能夠解決問題。只能根據目前的現象來推論了。既然加第二個發佈訂閱的時候除了問題。那就把這個發佈訂閱刪除了,然後試試。在刪除了新建的2個發佈訂閱後,之前的那個發佈訂閱就正常運行了。

問題2

新建別名的情況下,, 是不需要ping同計算機名字的,不用在hosts裏面增加解析,通過別名SSMS就可以訪問這個名字。
但是某一個別名始終無法訪問,原因是別名中有空格

總結

以上2個問題看上去很棘手,但解決辦法很簡單。實際上很多問題的解決都是一樣,需要大膽嘗試,細心求證。做DBA的一個最基本素質就是一定要細心。然後收集目前已知的信息,分析,然後解決問題






發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章