十年河東,十年河西,莫欺少年窮
學無止境,精益求精
1、在分發伺服器執行如下指令碼
select * from MSsubscriber_info select * from MSpublications
2、選擇分發資料庫-distribution,執行如下指令碼
sp_helpsubscriptionerrors 'IZQY9C2TQSKGS9ZTEST' ,'DBTEST' , 'DbPiblish' ,'iZzvz98dbvrvv4ZTS' ,'DBTEST'
執行完畢後,發現各種錯誤
其中最多的是 20598 ,然後
檢視導致錯誤的操作及表
-- EXEC sp_browsereplcmds @xact_seqno_start='0x000000B400015592000A00000000',@xact_seqno_end='0x000000B400015592000A00000000'
透過箭頭所指的欄位,繼續檢視詳細錯誤類別--此時可以看到具體的資料表名
分發訂閱時,一旦發生此類錯誤,分發訂閱就會停止,嚴重影響了資料同步及正常業務保障
如果解決這些問題?
解決方法1:(a、更新、b、刪除):在訂閱端把缺少的資料行新增(根據以上出錯ID加一條記錄)或用匯入匯出方法(SQL語句同步指定以上ID).(原因:訂閱端缺少資料行造成刪除或更新找不到資料行而出錯),
不推薦以下方法(解決方法2、解決方法3)
解決方法2:改同步儲存過程介面把丟擲錯碼判斷去掉,會造成資料不同步,如果取消最好只取消刪除時呼叫的儲存過程(如:sp_MSdel_dboTableName)
解決方法1太過複雜,且大資料情況下,錯誤很多時,沒法操作。
那麼,我們就剩下最後一個方法了,將錯誤碼忽略
如何操作?
右鍵 本地釋出,找到分發伺服器屬性,點選分發伺服器屬性
選擇 skip 這些錯誤碼
配置好後,檢視伺服器釋出是否恢復正常
已經恢復正常了。
這種跳過錯誤的操作隨不可取,但確實好用,另外,我們可以透過定時將主庫還原到從庫的方式來減少主從資料差異
參考:
事務複製中訂閱節點非活動( inactive)錯誤
SQL Server同步複製問題排查方法
sqlserver複製報”應用複製的命令時在訂閱伺服器上找不到該行“解決方法