SQL Server でハードウェアまたはシステムの問題を示すエラー メッセージ 823

文書翻訳 文書翻訳
文書番号: 828339 - 対象製品
すべて展開する | すべて折りたたむ

目次

現象

以下のエラー メッセージが表示された場合、Microsoft SQL Server 2000 で、データベース ファイルの読み取り中または書き込み中に、ハードウェアまたはシステムの問題が検出されたことを示している場合があります。
エラー 823
ファイル '<file>' のオフセット <offset> に <operation> 中に I/O エラー <error> が発生しました。
: Microsoft SQL Server 2005 と Microsoft SQL Server 7.0 では、エラー メッセージの形式が若干異なります。ただし、SQL Server 2005 でも SQL Server 7.0 でも考え方は同じであり、同じ説明が当てはまります。

<error> や <operation> など、このメッセージの各部分に関する詳細、および SQL Server 2000 で実行される Microsoft Windows API 呼び出しの使用の詳細については、この資料の「詳細」を参照してください。

解決方法

SQL Server 2000 では、以下の条件に該当する場合に、この資料の「現象」に記載されているエラーが発生します。
  • オペレーティング システム エラー : 読み取りの Windows API 呼び出しまたは書き込みの Windows API 呼び出しが正常に実行されず、SQL Server で Windows API 呼び出しに関連するオペレーティング システム エラーが発生した場合。次のエラー メッセージは、オペレーティング システムの 823 エラーの例です。
    2003-07-28 09:01:27.38 spid75 エラー : 823、レベル : 24、
    状態 2
    ファイル 'e:\program files\Microsoft SQL Server\mssql\data\mydb.MDF' のオフセット 0x0000002d460000 に read 中に 2003-07-28 09:01:27.38 spid75 I/O エラー 1117 (I/O デバイス エラーが発生したため、要求を実行できませんでした。) が発生しました。
    オペレーティング システム エラー 6 ("ハンドルが無効です") 以外の、823 エラーが報告されるオペレーティング システム エラーは、多くの場合、システムまたはハードウェアの問題に関連するものです。オペレーティング システム エラーが発生した場合は、DBCC CHECKDB ステートメントによって問題が報告されなくても、ハードウェアの製造元、システム管理者、または Microsoft Product Support Services と協力して、この問題を解決することが必要な場合があります。

    : エラー メッセージ内のファイルに関連付けられているデータベースに対して DBCC CHECKDB ステートメントを実行しても、エラーが表示される場合と表示されない場合があります。823 エラーが発生した場合、DBCC CHECKDB ステートメントを実行できます。DBCC CHECKDB ステートメントによってエラーが報告されない場合、システムの問題またはディスクの問題が断続的に発生している可能性があります。
  • I/O 論理チェック エラー : データベース ファイルに対する読み取りの Windows API 呼び出しまたは書き込みの Windows API 呼び出しが正常に実行されても、データに対する特定の論理チェックが失敗する (破損ページが検出されるなど) と、823 エラーが発生します。次のエラー メッセージは、I/O 論理チェック エラーに関する 823 エラーの例です。
    2003-09-05 16:51:18.90 spid17 エラー : 823、レベル : 24、
    状態 2
    ファイル 'F:\SQLData\mydb.MDF' のオフセット 0x00000094004000 に read 中に 2003-09-05 16:51:18.90 spid17 I/O エラー (torn page) が発生しました。
    この問題を解決するには、まず、エラー メッセージ内のファイルに関連付けられているデータベースに対して DBCC CHECKDB ステートメントを実行します。DBCC CHECKDB ステートメントによってエラーが報告された場合、この問題のトラブルシューティングを行う前に、報告されたエラーを修正します。DBCC CHECKDB エラーを修正しても問題が解決しない場合、または DBCC CHECKDB ステートメントによってエラーが報告されない場合は、Microsoft Windows NT システム イベント ログにシステム エラーまたはディスク関連のエラーがないかどうかを確認します。また、適切な診断の実行について、ハードウェアの製造元に問い合わせることもできます。

詳細

エラー メッセージの詳細

ここでは、次の 823 エラー メッセージの各部分について詳しく説明します。
エラー 823
ファイル '<file>' のオフセット <offset> に <operation> 中に I/O エラー <error> が発生しました。
以下に、823 エラー メッセージの情報について詳しく説明します。
  • <error> : オペレーティング システム エラーまたは論理 I/O チェック エラーを示します。オペレーティング システム エラーの場合、オペレーティング システム エラー番号が "I/O エラー" の後に表示されます。オペレーティング システム エラーの内容は、"I/O エラー error number" の後のかっこ内に表示されます。

    論理 I/O チェック エラーの場合、エラー メッセージがかっこ内に表示されます。表示されるエラー メッセージは、以下のいずれかです。
    • (torn page) : 破損ページの詳細については、SQL Server 2000 Books Online を参照してください。
    • (bad page ID) : このメッセージは、ページ ヘッダーの pageID が、ディスクから読み取られるはずのページと一致しないことを示します。たとえば、論理ページ 100 のデータベース ファイルに対して SQL Server 2000 で提供されたファイル オフセットが 1 である場合、その 8 KB ページのページ ヘッダーの pageID は、1:100 である必要があります。そうでない場合、論理 I/O チェック エラー メッセージに、"bad page ID" が表示されます。
    • (insufficient bytes transferred) : このメッセージは、Windows API 呼び出しは正常に実行されましたが、転送されたバイト数が予期されていた数とは異なることを示します。
  • <operation> : read または write のいずれかです。
  • <offset> : ファイルの先頭からの物理的なバイト オフセットを示します。この数値を 8192 で除算することで、エラーによって影響を受ける論理ページの番号を取得できます。
  • <file> : I/O の問題に関連のあるファイルを示します。ファイルは、完全な物理パスで示されます。

SQL Server I/O および Windows API

SQL Server 2000 では、ReadFile、ReadFileScatter、WriteFile、および WriteFileGather などの標準 Windows API 呼び出しを使用して、データベース ファイルでの I/O が実行されます。SQL Server 2000 で Windows API 呼び出しが使用される場合、ファイルがあらかじめ正常に開かれていないと、SQL Server 2000 によってファイルの読み取りまたは書き込みが行われません。このため、Windows API 呼び出しが成功しない場合や、オペレーティング システム エラー 6 ("ハンドルが無効です") 以外のエラーの場合、エラーは Windows、またはデバイス ドライバなどの低レベルのソフトウェア コンポーネントで発生している可能性が高くなります。オペレーティング システム エラー 6 が発生するのはハンドルが無効な場合であるため、SQL Server が Windows API 呼び出しを行う際に無効なハンドルを使用しているために問題が発生している可能性があります。ただし、この問題がシステムの問題であることに変わりありません。

たとえば、SQL Server エラー ログ ファイルに次のエラー メッセージが出力された場合、SQL Server では、Windows API 呼び出しを使用して tempdb プライマリ データベース ファイルに書き込みを行うときに、オペレーティング システム エラー 2 が発生しています。
エラー : 823、レベル : 24、状態 : 4
ファイル 'D:\Program Files\Microsoft SQL Server\MSSQL\data\tempdb.mdf' のオフセット 0x00000000284000 に write 中に I/O エラー 2 が発生しました。
SQL Server では、そのファイルは既に正常に開かれていたため、"ハンドルが無効です" というエラーは返されませんでした。そのため、エラーは、ファイル システムまたはデバイス ドライバなどの、低レベルのカーネル ソフトウェア コンポーネントで発生している可能性が高くなります。この問題が示しているのは SQL Server の問題ではないため、そのファイルに関連のあるファイル システムまたはデバイス ドライバの問題として調査する必要があります。

関連情報

トレース フラグ 818 を使用すると、SQL Server エラー ログ ファイルに 823 エラーの追加の診断情報が出力される場合があります。 この情報の関連情報を参照するには、以下の「サポート技術情報」 (Microsoft Knowledge Base) をクリックしてください。
826433 [PRB] 報告されない入出力の問題を検出するために追加された新しい SQL Server 診断機能

プロパティ

文書番号: 828339 - 最終更新日: 2006年2月6日 - リビジョン: 2.1
この資料は以下の製品について記述したものです。
  • Microsoft SQL Server 2000 Standard Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2005 Express Edition
  • Microsoft SQL Server 2005 Workgroup Edition
キーワード:?
kbprb KB828339
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"

フィードバック

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com