疑難排解錯誤 3313、3314、3414 或 3456 (SQL Server)
針對 SQL Server 資料庫進行重做、恢復或復原作業期間發生的錯誤會讓資料庫進入 SUSPECT 狀態。這類錯誤包括 3313 (記錄重做錯誤)、3314 (記錄恢復錯誤)、3414 (讓資料庫無法重新啟動的復原錯誤) 以及 3456 錯誤 (記錄交易的重做錯誤)。
說明
重做、恢復或復原錯誤會讓資料庫進入 SUSPECT 狀態,因為主要檔案群組以及其他檔案群組 (可能) 有問題而且可能已損毀。此時,資料庫無法使用,而且使用者必須採取動作來解決問題。
[!附註]
如果這個錯誤發生在 tempdb,SQL Server 執行個體會關閉。
使用者動作
每當您嘗試啟動資料庫時所發生的暫時性狀況或永久性失敗可能會造成重做、恢復或復原錯誤。
[!附註]
遇到其中任何一種錯誤狀況時,SQL Server 通常會在 SQL ServerLOG 資料夾中產生三個檔案。SQLDumpnnnn.txt 檔案包含與失敗有關的進階診斷資訊,包括與遇到問題之交易和頁面有關的詳細資料。這個資訊通常是由產品支援小組用來分析失敗的原因。
如需有關發生特定 3313、3314、3414 或 3456 錯誤之原因的詳細資訊,請檢查 Windows 事件記錄檔,尋找指示特定失敗的先前錯誤。適當的使用者動作主要取決於 Windows 事件記錄檔中的資訊指出 SQL Server 錯誤是由暫時性狀況造成,還是由永久性失敗造成。
如果是暫時性狀況:
請嘗試執行下列 ALTER DATABASETransact-SQL 陳述式,讓資料庫返回線上狀態:
ALTER DATABASE <database name> SET ONLINE;
若要判斷復原是否成功完成以及資料庫是否回到線上,請查閱 SQL Server 錯誤記錄檔以及 sys.databases 目錄檢視。
如果資料庫在線上,請執行 DBCC CHECKDBTransact-SQL 陳述式來確認資料庫是否一致。
如果是永久性失敗:
請在 SQL Server 錯誤記錄檔中,尋找您要疑難排解的錯誤 (3313、3314、3414 或 3356),並且檢閱這個錯誤之前的訊息來判斷您是否可以手動更正它們。如果您可以更正之前的錯誤,請執行下列其中一個程序:
還原及驗證資料庫 (建議的程序),如下所示:
嘗試進行結尾記錄備份。
使用 RESTORE …WITH NORECOVERY Transact-SQL 陳述式,從完整資料庫備份還原資料庫,之後可以選擇進行差異資料庫備份。
如果資料庫使用完整復原模式,請使用 RESTORE LOG … WITH NORECOVERY,套用在還原完整或差異備份至失敗點之後所取得的所有交易記錄備份。
當您已經盡量將資料庫還原到接近失敗點的位置時,請使用 RESTORE DATABASE <database_name> WITH RECOVERY 來復原資料庫。
當資料庫回到線上之後,請執行 DBCC CHECKDBTransact-SQL 陳述式來確認資料庫是否一致。
嘗試使用本節稍早所描述之暫時性錯誤的步驟,讓資料庫返回線上狀態。
使用緊急模式,如下所示:
執行下列 ALTER DATABASETransact-SQL 陳述式,將資料庫轉移到 EMERGENCY 狀態:
ALTER DATABASE <database_name> SET EMERGENCY;
檢閱 ALTER DATABASE 陳述式及 SQL Server 錯誤記錄檔中的輸出。
在 sys.databases 目錄檢視中檢查資料庫的狀態。
使用 DBCC CHECKDB 陳述式針對資料庫執行一致性檢查,以了解損壞的本質和程度。
從 DBCC CHECKDB 評估輸出之後,您可以搭配 REPAIR_ALLOW_DATA_LOSS 選項執行 DBCC CHECKDB。
警告 在使用此選項之前,請在《SQL Server 線上叢書》中的<DBCC CHECKDB (Transact-SQL)>主題內仔細檢閱有關在資料庫緊急模式中解決錯誤的資訊。
[!附註]
如需有關回應與 3313、3314、3414 或 3356 錯誤有關之硬體問題的詳細資訊,請參閱<MSSQLSERVER_824>。
避免這個錯誤的步驟
若要避免再次遇到這個狀況,請執行下列步驟:
檢閱 SQL Server 錯誤記錄檔和 Windows 事件記錄檔,以找出任何可能導致這個錯誤的全系統問題。
若要排除導致此狀況的任何已知產品問題,請針對您的 SQL Server 版本套用最新的累計更新。