注意: 如果有未完成的交易記錄檔備份,sp_change_secondary_role 失敗,錯誤 3101

文章翻譯 文章翻譯
文章編號: 294397 - 檢視此文章適用的產品。
Bug #: 352508 (SHILOH)
全部展開 | 全部摺疊

在此頁中

徵狀

兩種下列情況皆成立時,記錄傳送組的待命伺服器上的預存程序執行 sp_change_secondary_role 失敗到 3101 錯誤訊息:

  • @ 終止 引數被傳遞的值是 1。請注意這也是預設值,這個參數。
  • 沒有套用待命伺服器上至少一個未完成的交易記錄檔。
如果您使用 xp_sqlmaint 此時延伸程序執行 RESTORE LOG 作業待命伺服器上,輸出為:
來源資料庫-測試
目的地資料庫-測試
[Microsoft SQL-DMO (ODBC SQLState: 42000)]
錯誤 3101: 無法取得 [Microsoft] [ODBC SQL Server 驅動程式] [SQL Server] 獨佔存取,因為資料庫正在使用中。
[Microsoft][ODBC SQL Server 驅動程式][SQL Server]RESTORE LOG 正在異常終止。
載入 0 個檔案
空值
完成的載入計劃 SERVER1\INST1.test_logshipping

伺服器: msg 22029、 層級 16,狀態 1、 行 0
sqlmaint.exe 失敗。

發生的原因

如果兩個伺服器之間設定記錄傳送,而且您需要將次要或待命伺服器線上,您可以將次要或待命伺服器線上待命伺服器上執行 sp_change_secondary_role 預存程序。如果您執行 [sp_change_secondary_role 預存程序有預設參數預存程序會執行這些工作:

  • 將待命資料庫設定為單一使用者模式。
  • 複製複製可能需要任何額外檔案。
  • 停用待命伺服器上的複製工作。
  • 還原任何未完成的交易記錄檔。
  • 次要伺服器上顯示資料庫上線。
  • 某些內部執行記錄傳送 msdb 資料庫中的計劃的資料表,因為該資訊現在需要更新。
如果 sp_change_secondary_role 預存程序傳遞的 @ 終止 值 = 1 (這也是預設輸入的值為 @ 終止 參數) 前面的序列中的項目 1 會使用一個
ALTER DATABASE dbname SET SINGLE_USER
命令來變更資料庫的狀態,並確定沒有任何使用者都已連接,而嘗試執行還原作業。不過,ALTER 資料庫陳述式會使它以採取共用的資料庫鎖,連線會終止之前,一直生效。項目 2 和 4 是使用 xp_sqlmaint 延伸程序開啟個別連接到該伺服器,因此這些步驟使用伺服器處理序識別碼 (SPID) 不同於 spid 的原始 sp_change_secondary_role 連線來執行。如此一來 RESTORE LOG 工作由預存程序 spid 區塊會保留在共用的資料庫鎖定該 xp_sqlmaint 嘗試完成。因此,sp_change_secondary_role 程序將會失敗並 3101 錯誤訊息。

其他可行方案

若要避免這個錯誤,使用下列解決方法之一:
  • 確保有任何未完成的交易記錄檔之前執行 sp_change_secondary_role 預存程序。手動執行 RESTORE 作業次要伺服器上,執行 sp_change_secondary_role 之前,可確保會任何未完成的交易記錄檔。

    -或者-
  • 您可以傳遞到零值 @ 終止 參數 (@ 終止 = 0) 時執行 sp_change_secondary_role 預存程序。不過,使用者必須檢查連接到資料庫,以確保 RESTORE LOG 運作順利執行預存程序之前沒有使用者。

狀況說明

Microsoft 已確認此選項以在 SQL Server 2000 中有問題。

其他相關資訊

sp_change_secondary_role 是一種系統預存程序,當您想要讓待命伺服器線上待命伺服器上執行。

參考

SQL Server 線上叢書 》 ; 主題: < 如何設定及執行記錄傳送角色變更 (Transact-SQL)"

屬性

文章編號: 294397 - 上次校閱: 2004年6月25日 - 版次: 3.3
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Enterprise Edition
  • Microsoft SQL Server 2000 Developer Edition
關鍵字:?
kbmt kbbug kbpending KB294397 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:294397
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com