Share via


MSSQLSERVER_9004

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 9004
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 LOG_CORRUPT
訊息文字 在處理資料庫 '%.*ls' 的記錄檔時,發生錯誤。 If possible, restore from backup. 若備份無法使用,可能需要重建記錄檔。

說明

在復原、復原或複寫期間處理記錄檔時發生錯誤。 這可能表示作業系統偵測到的錯誤,或 SQL Server 偵測到的內部一致性錯誤。
SQL Server Database Engine 會在讀取和處理交易記錄內容時,對交易記錄內容的一致性執行邏輯檢查。 不會檢查記錄標頭、記錄區塊和記錄檔記錄的所有層面。 狀態號碼提供有關失敗類型的詳細資訊:

  • 狀態 1 虛擬記錄檔 (VLF) 的記錄檔標頭已損毀。 如果在服務啟動時啟動資料庫時找到損毀的記錄檔標頭,您可能只會在 ERRORLOG 中看到錯誤 9004。 記錄檔標頭是交易記錄內每個 VLF 的第一個部分。 記錄檔標頭與記錄檔的單一檔案標頭或前 8 KB 的檔案標頭不同。 如果記錄檔的檔案標頭損毀,您可能會收到 Msg 5172,類似于資料庫檔案頭頁損毀。
  • 狀態 2 和 3 在 RESTORE 作業期間執行復原時,記錄區塊無效。
  • 狀態 4 到 12 這些都是處理記錄檔記錄時記錄區塊的各種檢查。 這些包括交易記錄一致性的同位、磁區和其他邏輯檢查

在大部分情況下,此錯誤只會顯示在 ERRORLOG 或 Windows 應用程式事件記錄檔中,EventID = 9004,因為處理記錄的作業不是以直接使用者命令為基礎(例如 SQL Server 引擎啟動時執行的復原)。 在這些情況下,錯誤 9004 通常會與錯誤 3414 一起出現。 不過,某些查詢,例如 ALTER DATABASE 可能需要處理記錄,因此會看到這些錯誤。 由於錯誤位於 Severity=21,因此使用者會話已中斷連線。

原因

錯誤 9004 是一般錯誤,指出交易記錄的內容已損毀。 記錄檔變得不一致的原因類似于 SQL Server 引擎偵測到的任何資料庫損毀問題。 若要找出記錄損毀的原因,您應該遵循用於資料庫損毀的類似技術,包括分析可能的硬體、檔案系統和 I/O 問題。 請注意,DBCC CHECKDB 不會檢查交易記錄做為其作業的一部分,而且無法偵測記錄損毀錯誤。 SQL Server 引擎本身引發錯誤 9004。

使用者動作

下列其中一個動作會更正此錯誤:

  • 從備份 還原:從已知良好的備份還原,以從此問題中復原。 如果資料庫或記錄備份的記錄部分包含損毀的內容,您可能會在 RESTORE 上遇到錯誤 9004。 在此情況下,備份中的交易記錄會損毀。

  • 重建記錄 檔:如果您無法從備份還原,您可以藉由重建交易記錄讓資料庫上線。 您應該仔細瞭解重建交易記錄的後果。 這包括 資料庫中可能遺失交易一 致性。 如需如何重建交易記錄的詳細資訊,請參閱 解決資料庫緊急模式 中的錯誤。

  • 檢查系統問題的 記錄檔:此外,請檢查系統事件記錄檔和錯誤記錄檔,以找出系統內可能造成問題的問題。