前些天部署了一套事務復制環境,訂閱端只需要最近五年的數據。
復制采用的是備份文件初始化,復制搭好后用了一個腳本在訂閱端刪除五年前的數據。
今天早上復制出問題了。出現了The row was not found at the Subscriber when applying the replicated command.的錯誤
導致堆積了大量的未分發命令。
--------------------------------------------------------------------------------------------------------------------------
解決方案1):
根據http://technet.microsoft.com/en-us/library/ms151331(v=sql.105).aspx
在分發數據庫上運行:
sp_helpsubscriptionerrors [ @publisher = ] 'publisher' , [ @publisher_db = ] 'publisher_db' , [ @publication = ] 'publication' , [ @subscriber = ] 'subscriber' , [ @subscriber_db = ] 'subscriber_db'
找到返回值中最大的xact_seqno
之后在訂閱端數據庫上運行:
sp_setsubscriptionxactseqno [ @publisher = ] 'publisher' , [ @publisher_db = ] 'publisher_db' , [ @publication = ] 'publication' , [ @xact_seqno = ] xact_seqno
但是,如果再次出現同樣的問題,還得重復同樣的步驟來忽略錯誤。
--------------------------------------------------------------------------------------------------------------------------
解決方案2):
通過在分發代理配置文件中設置Continue On Data ConsistencyErrors,直接跳過事務復制中的錯誤。(因為我根本就不關心5年前的數據的變更)
新聞熱點
疑難解答