次の方法で共有


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 は、ファイル I/O 操作を実行するために、 ReadFileWriteFileReadFileScatterWriteFileGather などの Windows API を使用します。 SQL Server は、これらの I/O 操作を実行した後、これらの API 呼び出しに関連付けられているエラー状態をチェックします。 API 呼び出しがオペレーティング システム (OS) エラーで失敗した場合、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.
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 によって生成されたエラー

エラー メッセージに、ファイルに関連付けられているデータベースの DBCC CHECKDB ステートメントからエラーが表示される場合があります。 823 エラーが表示されたら、 DBCC CHECKDB ステートメントを実行できます。 DBCC CHECKDB ステートメントでエラーが報告されない場合は、システムの断続的な問題またはディスクの問題が発生している可能性があります。

トレース フラグ 818 を使用すると、SQL Server エラー ログ ファイルで 823 エラーの詳細な診断情報を確認できます。 詳細については、「 SQL Server 診断では、古い読み取りまたは書き込みの損失が原因で報告されない I/O の問題が検出されるを参照してください。

原因

通常、823 エラー メッセージは、基になるストレージ システム、または I/O 要求のパスにあるハードウェアまたはドライバーに問題があることを示します。 ファイル システムに不整合がある場合、またはデータベース ファイルが破損している場合に、このエラーが発生することがあります。 ファイル読み取りの場合、SQL Server は 823 を返す前に、読み取り要求を 4 回再試行します。 再試行操作が成功した場合、クエリは失敗しませんが、メッセージ MSSQLSERVER_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 エラーの結果となる問題が解消されるかどうかを確認できますか。

OS エラー 21 の例

この場合、基になる OS エラー 21 は、ディスク デバイスがオフラインであり、OS と SQL Server で使用できなかったことを示します。

Error: 823, Severity: 24, State: 2.
The operating system returned error 21 (The device is not ready.) 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.

Resolution

同様のシナリオが発生した場合は、基になる OS エラーに対処します。 この場合は、システム管理者およびハードウェア ベンダーと協力して、ディスク デバイスがオンラインで正常に機能していることを確認してください。 エラーや損傷が報告されていないことを確認します。

ネットワーク接続が不安定な場合は、たとえば、データベース ファイルがネットワーク接続ストレージ (NAS) またはネットワーク経由でアクセスされる SAN デバイスに格納されている場合など、このエラーが発生する可能性があります。 このような場合は、 DBCC CHECKDB を実行してディスク デバイスを復元した後に、データベースの物理的な整合性を確認する必要があります。 データベースの損傷が報告された場合は、最新の正常なデータベース バックアップを復元します。