適用於:SQL Server
詳細資料
| 屬性 | 值 |
|---|---|
| 產品名稱 | SQL 伺服器 |
| 事件識別碼 | 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 作業。 在 SQL Server 執行這些 I/O 作業之後,它會檢查與這些 API 呼叫相關聯的任何錯誤狀況。 如果 API 呼叫失敗,並出現操作系統錯誤,則 SQL Server 會回報錯誤 823。
823 錯誤訊息包含下列資訊:
- 執行 I/O 作業的資料庫檔案。
- 嘗試 I/O 作業之檔案內的位移。 這是檔案開頭的實體位元組位移。 將此數位除以 8,192 可提供受錯誤影響的邏輯頁碼。
- 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 錯誤記錄檔。 如需詳細資訊,請參閱 SQL Server 診斷偵測因讀取過時或寫入遺失而未報告的 I/O 問題。
原因
823 錯誤訊息通常表示基礎記憶體系統或硬體或驅動程式在I/O要求路徑中發生問題。 若檔案系統中存在不一致或資料庫檔案損毀,您可能會遇到此錯誤。 針對讀取的檔案,SQL Server 已在傳回 823 之前重試讀取要求四次。 如果重試作業成功,查詢不會失敗,但訊息 MSSQLSERVER_825 寫入 ERRORLOG 和事件記錄檔中。
使用者動作
檢 閱 中的
msdbsuspect_pages數據表,以取得遇到此問題的其他頁面(在相同的資料庫或不同資料庫中)。使用 DBCC CHECKDB 命令,檢查位於相同磁碟區的資料庫一致性(與 823 訊息中所報告的資料庫相同。 如果您從 DBCC CHECKDB 命令中發現不一致的情況,請使用如何針對 DBCC CHECKB 所報告的資料庫一致性錯誤進行疑難解答的指引。
檢查 Windows 事件記錄檔中是否有從作業系統或儲存裝置或裝置驅動程式回報的任何錯誤或訊息。 如果它們以某種方式與此錯誤相關,請先解決這些錯誤。 例如,除了 823 訊息之外,您可能也會注意到事件,例如「驅動程式在事件記錄檔中偵測到 \Device\Harddisk4\DR4 上的控制器錯誤」。 在此情況下,您必須評估此檔案是否存在於此裝置上,然後先更正這些磁碟錯誤。
使用 SQLIOSim 公用程式來模擬磁碟子系統公用程式上的 SQL Server 活動,以找出這些 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系統的健康情況
-
- 檢查這些篩選器驅動程式是否有任何更新
- 是否可以移除或停用這些篩選驅動程式,以觀察導致823錯誤的問題是否消失?