SQL Server複製中錯誤處理

來源:互聯網
上載者:User

在SQL Server的複製中出現在錯誤“應用複製的命令時在訂閱伺服器上找不到該行”,換上以前的做法就是刪除掉這個複製,然後再建立一個複製,但是這次,我突然想BAIDU一下,看看別人是怎麼處理這個問題的,然後發現找到的文章都是從MSDN上抄下來的,因此我決定把我的做法寫下來。

首先查MSDN,確定這個錯誤的ID為20598,這個下面會用到;確定了錯誤ID之後,有兩種方法可以跳過這個錯誤

第一種是使用“右鍵-》複製-》散發者屬性-》預設設定檔-》然後建立一個新的設定檔,”這樣子就可以讓分發的所有複製都使用新的設定檔,一般用來修改一些公用的參數。

第二種是開啟複製監視器,然後雙擊你要修改的那個複製,在“操作”菜單下有個代理設定檔,開啟它後建立一個設定檔,然後使用這個設定檔,這種方法用來修改單個的複製的參數。

建立後修改-SkipErrors這一項,點“值”欄後輸入剛剛查到的ID號,就是20598,點確定,然後勾上你剛剛建立的這個設定檔。

重啟代理,開啟複製監視器,你會發現它已經跳過了這個錯誤。

如果是對等資料複製的話,要慎用,因為可能導致兩個資料庫的資料不一致,請先查明原因,然後再決定是否要跳過這個錯誤。 

於事務性複製,有兩種方法可以跳過在分發過程中遇到的錯誤:

分發代理的 -SkipErrors 參數,可用來跳過某種類型的錯誤。有錯誤的事務將不提交,但後續的事務將提交。

sp_setsubscriptionxactseqno 預存程序,可用來跳過一個或多個導致錯誤的事務。非SQL Server 的訂閱伺服器沒有此選項。

重要事項:

在典型的複製處理中,應該不會遇到任何需要跳過的錯誤。跳過錯誤時要謹慎,要瞭解發生錯誤的條件、錯誤的起因以及需要跳過錯誤或特定事務而不解決的理由。如果在訂閱伺服器上跳過發行伺服器上提交的事務,則這兩個節點就不會完全同步,這會導致其他錯誤。

-SkipErrors 參數:

預設情況下,發布代理遇到錯誤時就會停止。如果使用 -SkipErrors 參數,並指定了預期的或不想讓其幹擾複製的錯誤,則代理就會記錄錯誤資訊,然後繼續運行。例如,如果要指定分發代理,使其記錄重複鍵違規但繼續處理後續事務,就需要指定代理跳過錯誤 2601(不能在具有唯一索引 ’%.*ls’ 的對象 ’%.*ls’ 中插入重複鍵的行。)和 2627(違反了 %ls 約束 ’%.*ls’。不能在對象 ’%.*ls’ 中插入重複鍵): -SkipErrors 2601;2627

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.