MSSQLSERVER 錯誤 823

適用於:SQL Server

詳細資料

屬性
產品名稱 SQL Server
事件識別碼 823
事件來源 MSSQLSERVER
元件 SQLEngine
符號名稱 B_HARDERR
訊息文字 作業系統將錯誤 %ls 傳回給 SQL Server,期間:%S_MSG 在 %#016I64x 位移,檔案:'%ls'。 SQL Server 錯誤記錄檔和系統事件記錄檔中的訊息或許可以提供其他詳細資訊。 這是嚴重的系統層級錯誤狀況,且可能會損及資料庫的完整性,所以必須立即更正。 完成完整資料庫一致性檢查 (DBCC CHECKDB)。 導致這個錯誤的原因有許多可能性; 如需詳細資訊,請參閱《SQL Server 線上叢書》。

說明

SQL Server 使用 Windows API(例如 ReadFile WriteFile ReadFileScatter WriteFileGather )來執行檔案 I/O 作業。 執行這些 I/O 作業之後,SQL Server 會檢查與這些 API 呼叫相關聯的任何錯誤狀況。 如果 API 呼叫失敗,並出現作業系統錯誤,則 SQL Server 會回報錯誤 823。

823 錯誤訊息包含下列資訊:

  • 執行 I/O 作業的資料庫檔案
  • 嘗試 I/O 作業之檔案內的位移。 這是檔案開頭的實體位元組位移。 將此數位除以 8192 會提供受錯誤影響的邏輯頁碼。
  • I/O 作業是讀取或寫入要求
  • 括弧中的作業系統錯誤碼和錯誤描述

作業系統錯誤: 讀取或寫入 Windows API 呼叫未成功,且 SQL Server 遇到與 Windows API 呼叫相關的作業系統錯誤。 下列訊息是 823 錯誤的範例:

Error: 823, Severity: 24, State: 2.
2010-03-06 22:41:19.55 spid58 The operating system returned error 1117 (The request could not be performed because of an I/O device error.) to SQL Server during a read at offset 0x0000002d460000 in file 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF'. Additional messages in the SQL Server error log and system event log may provide more detail. This is a severe, system-level error condition that threatens database integrity and must be corrected immediately. It is recommended to complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see SQL Server Books Online.

您可能會或可能不會在錯誤訊息中與檔案相關聯的資料庫上,看到 DBCC CHECKDB 語句的錯誤。 當您看到 823 錯誤時,您可以執行 DBCC CHECKDB 語句。 如果 DBCC CHECKDB 語句未報告任何錯誤,您可能會發生間歇性系統問題或磁片問題。

當您使用追蹤旗標 818 時,可能會將 823 錯誤的其他診斷資訊寫入 SQL Server 錯誤記錄檔。 如需詳細資訊,請參閱 KB 826433:已新增其他 SQL Server 診斷來偵測未報告的 I/O 問題

原因

823 錯誤訊息通常表示基礎儲存體系統或硬體或驅動程式在 I/O 要求路徑中發生問題。 當檔案系統中有不一致的情況或資料庫檔案損毀時,您可能會遇到此錯誤。 在讀取檔案的情況下,SQL Server 在傳回 823 之前,已經重試讀取要求四次。 如果重試作業成功,查詢將不會失敗,但訊息 825 會寫入 ERRORLOG 和事件記錄檔中。

使用者動作

  • 檢閱 MSDB 中的suspect_pages 資料表,以取得遇到此問題的其他頁面(在相同資料庫或不同資料庫中)。
  • 使用 DBCC CHECKDB 命令,檢查位於相同磁片區的資料庫一致性(與 823 訊息中所報告的資料庫相同。 如果您從 DBCC CHECKDB 命令中發現不一致的情況,請使用如何針對 DBCC CHECKB 所報告的資料庫一致性錯誤進行疑難排解的指引
  • 檢查 Windows 事件記錄檔中是否有從作業系統或儲存裝置或裝置驅動程式回報的任何錯誤或訊息。 如果它們以某種方式與此錯誤有關,請先解決這些錯誤。 例如,除了 823 訊息之外,您可能也會注意到事件,例如「驅動程式在事件記錄檔中偵測到 \Device\Harddisk4\DR4 上的控制器錯誤」。 在此情況下,您必須評估此檔案是否存在於此裝置上,然後先更正這些磁碟錯誤。
  • 使用 SQLIOSim 公用程式來找出這些 823 錯誤是否可以在一般 SQL Server I/O 要求之外重現。 SQLIOSim 公用程式隨附于 SQL Server 2008 和更新版本,因此不需要個別下載。 您通常可以在資料夾中 C:\Program Files\Microsoft SQL Server\MSSQLxx.MSSQLSERVER\MSSQL\Binn 找到它。
  • 請與您的硬體廠商或裝置製造商合作,以確保
    • 硬體裝置和設定符合 SQL Server 的 I/O 需求
    • I/O 路徑中所有裝置的設備磁碟機和其他支援的軟體元件都是最新的
  • 如果硬體廠商或裝置製造商為您提供任何診斷公用程式,請使用它們來評估 I/O 系統的健康情況
  • 評估這些 I/O 要求路徑中是否有遇到問題的篩選驅動程式
    • 檢查這些篩選器驅動程式是否有任何更新
    • 是否可以移除或停用這些篩選驅動程式,以觀察導致 823 錯誤的問題是否消失