次の方法で共有


MSSQLSERVER エラー 823

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 823
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 B_HARDERR
メッセージ テキスト オペレーティング システムにより、ファイル '%ls' のオフセット %#016I64x で %S_MSG 中の SQL Server にエラー %ls が返されました。 SQL Server エラー ログとシステム イベント ログ内の別のメッセージで詳細情報が報告されることもあります。 このシステムレベルのエラー状態は深刻で、データベースの一貫性を損なう可能性があるので、すぐに解決する必要があります。 完全なデータベース整合性確認 (DBCC CHECKDB) を完了させてください。 このエラーには多くの要因があります。詳細については、SQL Server オンライン ブックを参照してください。

説明

SQL Server では、Windows API (たとえば ReadFileWriteFileReadFileScatterWriteFileGather) を使用してファイル 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 を返す前に、読み取り要求を 4 回再試行しています。 再試行操作が成功した場合、クエリは失敗しませんが、メッセージ MSSQLSERVER_825 は ERRORLOG とイベント ログに書き込まれます。

ユーザー アクション

  • msdbテーブルで、この問題が発生している他のページ (同じデータベースまたは異なるデータベース内) を確認します。

  • DBCC CHECKDB コマンドを使用して、(823 メッセージで報告されているものと) 同じボリュームにあるデータベースの整合性を確認します。 DBCC CHECKDB コマンドで不整合が見つかった場合は、「DBCC CHECKB によって報告された、データベースの整合性エラーのトラブルシューティング方法」のガイダンスを使用してください。

  • Windows イベント ログで、オペレーティング システム、記憶装置、デバイス ドライバーのいずれかから報告されたエラーまたはメッセージがないか確認します。 何らかの方法でこのエラーに関連している場合は、まずそれらのエラーに対処します。 たとえば、823 メッセージとは別に、"ドライバーが \Device\Harddisk4\DR4 でコントローラー エラーを検出しました" などのイベントが、イベント ログのディスク ソースによって報告される場合もあります。 その場合は、このファイルがこのデバイスに存在するかどうかを評価してから、最初にそれらのディスク エラーを修正する必要があります。

  • SQLIOSim ユーティリティを使用して、ディスク サブシステム ユーティリティで SQL Server アクティビティをシミュレートし、通常の SQL Server I/O 要求の外部でこれらの 823 エラーを再現できるかどうかを確認します。 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 エラーの原因となる問題が解消されるかどうかを確認できますか。