共用方式為


MSSQLSERVER_3414

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 3414
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 REC_GIVEUP
訊息文字 復原時發生錯誤,導致資料庫 '%.*ls' (資料庫識別碼 %d) 無法重新啟動。 請診斷並修正復原錯誤,或者從已知完好的備份還原。 如果不能更正或預期錯誤,請連絡技術支援部門。

說明

指定的資料庫已復原,但無法啟動,因為復原期間發生錯誤。 此錯誤已讓資料庫處於 SUSPECT 狀態。 主要檔案群組和其他檔案群組可能是可疑的,而且可能會損毀。 資料庫無法在 SQL Server 啟動期間復原,因此無法使用。 需要使用者動作才能解決問題。 您會在 SQL Server Management Studio 中看到 SUSPECT 狀態(資料庫圖示旁),以及查看 [sys.databases.state_desc] 數據行時。 任何嘗試使用此狀態的資料庫都會導致下列錯誤:

Msg 926, Level 14, State 1, Line 1 
Database 'mydb' cannot be opened. It has been marked SUSPECT by recovery. See the SQL Server errorlog for more information

請注意,在 tempdb發生此錯誤時,SQL Server 實例會關閉。

原因

此錯誤可能是在嘗試啟動伺服器實例或復原資料庫期間存在於系統上的暫時性狀況所造成。 此錯誤也可能由每次嘗試啟動資料庫時發生的永久失敗所造成。 復原失敗的原因通常位於 ERRORLOG 或事件記錄檔中錯誤 3414 之前的錯誤(s)。 記錄檔中的上述錯誤包含相同的spid<n> 值。 例如,下列復原失敗是因為嘗試讀取記錄區塊時發生總和檢查碼錯誤。 注意 spid15s 存在於所有行中:

2020-03-31 17:33:13.00 spid15s     Error: 824, Severity: 24, State: 4.  
2020-03-31 17:33:13.00 spid15s     SQL Server detected a logical consistency-based I/O error: (bad checksum). It occurred during a read of page (0:-1) in database ID 13 at offset 0x0000000000b800 in file 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\mydb_log.LDF'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.   
2020-03-31 17:33:13.16 spid15s     Error: 3414, Severity: 21, State: 1.  
2020-03-31 17:33:13.16 spid15s     An error occurred during recovery, preventing the database 'mydb' (database ID 13) from restarting. Diagnose the recovery errors and fix them, or restore from a known good backup. If errors are not corrected or expected, contact Technical Support

有許多錯誤可能會導致資料庫復原失敗。 雖然您必須依案例評估每個錯誤,但資料庫復原失敗的解決方式通常與下列使用者動作一節中所述相同。

使用者動作

如需此錯誤 3414 發生原因的相關信息,請檢查 Windows 事件記錄檔或 ERRORLOG 中指出特定失敗的先前錯誤。 適當的用戶動作取決於 Windows 事件記錄檔中的資訊是否表示 SQL Server 錯誤是由暫時性狀況或永久失敗所造成。 錯誤訊息會指出「診斷復原錯誤並修正錯誤,或從已知的良好備份還原」。 因此,您可以嘗試更正您遇到以允許復原完成的錯誤(請參閱 可更正的錯誤和延遲的交易)。

如果無法更正錯誤,解決此問題的第一個最佳選項是從良好的備份還原。 不過,如果您無法從備份復原,您有兩個額外的選項,這無法保證完整數據復原:搭配 DBCC CHECKDB 使用緊急修復,或嘗試盡可能將數據複製到另一個資料庫。

  1. 從上次已知的良好資料庫備份還原
  2. 使用 DBCC CHECKDB 提供的 緊急修復方法
  3. 嘗試盡可能將數據複製到另一個資料庫。

還原良好資料庫備份的第一種方法是將資料庫帶入已知一致狀態的最佳選擇。

如果沒有備份,第二個最佳選擇是讓資料庫上線且可存取。 不過,您必須瞭解因為復原失敗而無法保證交易一致性。 無法知道哪些交易應該已回復或向前復原,但因為復原失敗而不允許。 在 DBCC CHECKDB 檔中的 <解決緊急模式 中的資料庫錯誤>一節中說明繼續進行緊急修復的步驟。

如果緊急修復無法運作,而且您想要嘗試將某些數據打撈到另一個資料庫,則存取資料庫的方式是透過 ALTER DATABASE <dbname> SET EMERGENCY 命令,以緊急模式設定資料庫。 然後,您可以嘗試從數據表複製數據。

可更正的錯誤和延遲的交易

並非所有在資料庫復原期間發生的錯誤都會導致復原失敗和可疑的資料庫:

第一次開啟資料庫和/或事務歷史記錄檔時發生錯誤,會在復原之前發生。 這類錯誤的範例為 1720417207。 修正這些錯誤之後,可能會允許復原繼續進行(但不保證會在發生其他復原錯誤時完成)。 17204 和 17207 之類的錯誤不會造成 SUSPECT 資料庫。 事實上,發生這些問題時,資料庫的狀態會RECOVERY_PENDING。

即使發生頁面層級錯誤,而且仍會維持交易一致性,SQL Server 仍允許復原完成。 此程式已減少產生 SUSPECT 資料庫的案例數目。 這個概念稱為 延遲交易

如果在復原期間發生的錯誤表示資料庫頁面發生問題,例如總和檢查碼錯誤或 Msg 824,則復原可能會允許完成擱置中的錯誤。 在未認可交易的情況下,頁面上的錯誤可能會導致 延遲的交易 允許復原完成。

下列 ERRORLOG 項目顯示復原期間發生 Msg 824 錯誤的範例,但允許復原完成延遲的交易。 請注意,在此情況下沒有錯誤 3414,以及資料庫已完成復原的訊息:

2010-03-31 19:17:18.45 spid7s      SQL Server detected a logical consistency-based I/O error: incorrect checksum (expected: 0xb2c87a0a; actual: 0xb6c0a5e2). It occurred during a read of page (1:153) in database ID 13 at offset 0x00000000132000 in file 'C:\Program Files\Microsoft SQL Server\MSSQL10.SQL2008\MSSQL\DATA\mydb.mdf'.  Additional messages in the SQL Server error log or system event log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.   
2010-03-31 19:17:18.45 spid7s      Error: 3314, Severity: 21, State: 1.   
2010-03-31 19:17:18.45 spid7s      During undoing of a logged operation in database 'mydb', an error occurred at log record ID (25:100:19). Typically, the specific failure is logged previously as an error in the Windows Event Log service. Restore the database or file from a backup, or repair the database.
2010-03-31 19:17:18.45 spid7s      Errors occurred during recovery while rolling back a transaction. The transaction was deferred. Restore the bad page or file, and re-run recovery.   
2010-03-31 19:17:18.45 spid7s      Recovery completed for database mydb (database ID 13) in 2 second(s) (analysis 204 ms, redo 25 ms, undo 1832 ms.) This is an informational message only. No user action is required.   

如果要向前復原已認可的交易,頁面可以標示為無法存取(任何未來嘗試存取頁面結果為 Msg 829),而且復原可以完成。 在此情況下,必須藉由從備份還原頁面,或使用 DBCC CHECKDB 進行修復來解除配置頁面,以更正錯誤。

另請參閱

ALTER DATABASE (Transact-SQL)
DBCC CHECKDB (Transact-SQL)
完整資料庫還原 (簡單復原模式)
延遲的交易
MSSQLSERVER_824
sys.databases (Transact-SQL)