FIX:記錄讀取器失敗並產生「...無法執行 sp_replcmds..」錯誤訊息

本文曾發行於 CHT308865
本文已封存。本文係以「現狀」提供且不會再更新。
BUG #: 355385 (SHILOH_BUGS)
BUG #: 355134 (SHILOH_BUGS)
徵狀
在 SQL Server 2000 Service Pack 1 中,記錄讀取器的處理序失敗並產生以下錯誤訊息:
The process could not execute 'sp_replcmds' on 'servername'. (該處理無法執行 'sp_replcmds' (於 'servername')。)
Repl Agent Status: 6 Status: 0, code: 18759, text: 'Replication failure. File 'S:\sql\ntdbms\srvrepl\src\replicat.cpp', line 3095.'. (複寫代理程式狀態:6 狀態:0,代碼:18759,文字:「複寫失敗。檔案 'S:\sql\ntdbms\srvrepl\src\replicat.cpp',第 3095 行。」)
注意:如果您是使用 RTM 版本而出現此錯誤訊息,RTM 版本會顯示不同的行號:
File 'q:\sphinx\ntdbms\srvrepl\src\replicat.cpp, line 2907.' (檔案 'q:\sphinx\ntdbms\srvrepl\src\replicat.cpp,第 2907 行。')
發生的原因
這個問題是「受限制」的更新記錄檔資料錄的「記錄讀取器」在處理交易式複寫時所發生。

受限制的更新資料錄是由多行 UPDATE 陳述式所產生的交易記錄檔資料錄,此陳述式會修改唯一條件約束的資料行或叢集索引鍵。這些記錄檔資料錄是由 BEGIN_UPDATE 與 END_UPDATE 記錄檔資料錄所限制。
解決方案
如果要解決此問題,請取得 Microsoft SQL Server 2000 最新版的 Service Pack。如需詳細資訊,請參閱 Microsoft Knowledge Base 中的以下文件:
290211 INF: How to Obtain the Latest SQL Server 2000 Service Pack

重要修正程式

注意:下面的重要修正程式是建立在 Microsoft SQL Server 2000 Service Pack 2 發行之前。

此修正程式的英文版應該具有以下或更新的檔案屬性:
   日期          版本       大小      檔名   ----------------------------------------------   24 Aug 2001   8.00.439   7.06 MB   Sqlservr.exe
注意:由於檔案的相依性,包含上述檔案的最新版重要修正程式或功能也可能會包含其他檔案。


其他可行方案
如果要解決此問題,您可以:
  • 重新啟動「記錄讀取器」以便能成功的重新處理有問題的更新交易。然而,請注意,這並不能防止未來因為受限制的更新交易所產生的失敗。-或-

  • -或-如果可能,請避免使用會修改唯一條件約束的資料行或叢集索引鍵的多資料列更新。
狀況說明
Microsoft 已確認 Microsoft SQL Server 2000 確實有上述問題。 此問題在 Microsoft SQL Server 2000 Service Pack 2 中已首次獲得修正。
参考
本文件是根據 Microsoft Knowledge Base 文件編號 Q308865 翻譯的。若要參考原始英文文件內容,請至以下網址:

內容

文章識別碼:308865 - 最後檢閱時間:12/06/2015 06:03:52 - 修訂: 2.1

Microsoft SQL Server 2000 Standard Edition

  • kbnosurvey kbarchive kbbug kbfix kbsqlserv2000presp2fix KB308865
意見反應