MSSQLSERVER_824

適用対象: SQL Server

詳細

属性 Value
製品名 SQL Server
イベント ID 824
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 B_HARDSSERR
メッセージ テキスト SQL Server で、一貫性に基づいた論理 I/O エラーが検出されました: %ls。 このエラーは、ファイル '%ls' のオフセット %#016I64x にあるデータベース ID が %d のページ %S_PGID の %S_MSG 中に発生しました。 SQL Server エラー ログまたはシステム イベント ログに追加のメッセージで詳細情報が報告されることもあります。 このエラー状態は深刻で、データベースの整合性を損なう可能性があるので、すぐに解決する必要があります。 完全なデータベース整合性確認 (DBCC CHECKDB) を完了させてください。 このエラーには多くの要因があります。詳細については、「https://go.microsoft.com/fwlink/?linkid=2252374」を参照してください。

症状

データベース ページの読み取りまたは書き込みを行った後で論理的な整合性チェックが失敗した場合は、SQL Server エラー ログまたは Windows アプリケーション イベント ログに次のエラー メッセージが表示されることがあります。

2022-11-02 15:46:42.90 spid51      Error: 824, Severity: 24, State: 2.
2022-11-02 15:46:42.90 spid51      SQL Server detected a logical consistency-based I/O error: incorrect pageid (expected 1:43686; actual 0:0). It occurred during a read of page (1:43686) in database ID 23 at offset 0x0000001554c000 in file 'H:\MSSQL16.MSSQLSERVER\MSSQL\DATA\my_db.mdf'. Additional messages in the SQL Server error log or operating system error log may provide more detail. This is a severe error condition that threatens database integrity and must be corrected immediately. Complete a full database consistency check (DBCC CHECKDB). This error can be caused by many factors; for more information, see https://go.microsoft.com/fwlink/?linkid=2252374.

SELECT または DML クエリでこのメッセージが発生した場合、エラー メッセージがアプリケーションに返され、データベース接続が終了します。

原因

このエラーは、ディスクからページが正常に読み取られたことが Windows によって報告されたが、SQL Server によってそのページに異常が検出されたことを示しています。 このエラーは、Windows によってエラーが検出されなかった点を除けば、エラー 823 と似ています。 エラー 824 は通常、ディスク ドライブの故障、ファームウェアの問題、デバイス ドライバーの不具合など、I/O サブシステムに問題があることを示しています。 I/O エラーの詳細については、「Microsoft SQL Server I/O Basics, Chapter 2」 (Microsoft SQL Server I/O の基礎 (第 2 章)) を参照してください。

SQL Server は、次の Windows API を使用して I/O 操作を実行します。ReadFile WriteFile ReadFileScatter WriteFileGather。 これらの I/O 操作の完了後、SQL Server によって、これらの API 呼び出しに関連付けられたエラー条件が確認されます。 オペレーティング システム エラーが発生して、これらの API 呼び出しが失敗した場合、SQL Server によってエラー 823 が報告されます。 Windows API 呼び出しが実際には成功していても、I/O 操作によって転送されたデータで論理的な整合性の問題が発生している場合があります。 これらの論理的な整合性の問題は、エラー 824 で報告されます。

824 エラーには、次の情報が含まれています。

  • I/O 操作が実行されるデータベース ファイル
  • I/O 操作が試行されたファイルでのオフセット
  • このファイルが属しているデータベース
  • I/O 操作に関係したページ番号
  • 操作が読み取りまたは書き込み操作だった
  • 失敗した論理的な整合性チェックの詳細 (チェックの種類、実際の値、およびこのチェックに使用された予測値)

これらの論理的な整合性チェックは、I/O転送に関係したデータの主要な要素が I/O 操作全体でそのまま維持されていたことを確認するために、SQL Server によって実行される整合性チェックです。 チェックには、チェックサム、破損ページ、短い転送、不適切なページ ID、古い読み取り、ページ監査エラーが含まれます。 実行されるチェックの性質は、データベースおよびサーバー レベルのさまざまな構成オプションによって異なります。

824 エラー メッセージは、通常、根本的なストレージ システムやハードウェア、または I/O 要求のパスにあるドライバーに問題があることを示しています。 ファイル システムに不整合がある場合、またはデータベース ファイルが破損している場合に、このエラーが発生することがあります。

解決方法

エラー 824 が発生した場合は、次の解決策を試すことができます。

  • msdbsuspect_pages テーブルを見直し、(同じデータベースまたは別のデータベース内の) 他のページでこの問題が発生しているかどうかを確認します。

    SELECT * FROM msdb..suspect_pages
    WHERE (event_type = 1 OR event_type = 2 OR event_type = 3);
    
  • DBCC CHECKDB コマンドを使用して、(824 メッセージで報告されているものと) 同じボリュームにあるデータベースの整合性を確認します。 DBCC CHECKDB コマンドで不整合が見つかった場合は、サポート技術情報記事の「DBCC CHECKB によって報告された、データベースの整合性エラーのトラブルシューティング方法」のガイダンスを使用してください。

    DBCC CHECKDB;
    
  • これらの 824 エラーが発生したデータベースで、PAGE_VERIFY CHECKSUM データベース オプションがオンになっていない場合は、すぐにオプションをオンにしてください。 824 エラーはチェックサム エラー以外の理由で発生することがありますが、CHECKSUM では、ディスクに書き込まれた後のページの整合性を確認するための最適なオプションが提供されます。 CHECKSUM オプションが有効になっていないデータベースを特定するには、このスクリプトを使用します。

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

  • SQLIOSim ユーティリティを使用して、このような 824 エラーが通常の SQL Server I/O 要求の外部で再現されるかどうかを確認します。 SQLIOSim には SQL Server 2008 (10.0.x) 以降のバージョンが付属しているため、別途ダウンロードする必要はありません。

  • ハードウェア ベンダーまたはデバイス製造元と協力して、次のことを確認します。

    • ハードウェア デバイスと構成が SQL Server の I/O 要件に準拠しています。
    • I/O パス内のすべてのデバイスのデバイス ドライバーおよびその他のサポート ソフトウェア コンポーネントが更新されている。
  • ハードウェア ベンダーまたはデバイス製造元から診断ユーティリティが提供されている場合は、それらを使用して I/O システムの正常性を評価します。

  • これらのリクエスト のI/O パスに存在するフィルター ドライバーがあるかどうかを評価します。 次のコマンドを実行すると、システム上のすべてのフィルター ドライバーを一覧表示できます。

    fltmc filters
    fltmc instances
    
    • このようなフィルター ドライバーによってスキャンされるデータベースとログ ファイルを除外します。 詳細については、ウイルススキャンから除外するディレクトリとファイル名拡張子 を参照してください
    • これらのフィルター ドライバーに更新プログラムがあるかどうかを確認します
    • これらのフィルター ドライバーを削除するか無効にして、824 エラーを発生させる問題が解決するかどうかを確認できますか。
  • 仮想マシンを実行している場合は、すべての仮想化ドライバーが更新されているかを確認、または詳細を仮想化ベンダーにお問合せください。

  • 問題がハードウェアに関するものではなく、また既知のクリーン バックアップが利用可能な場合は、そのバックアップを使用してデータベースを復元します。