次の方法で共有


MSSQLSERVER_5180

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 5180
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 DSK_BAD_FCB_FILEID
メッセージ テキスト データベース '%.*ls' で無効な ID %d のファイル制御ブロック (FCB) を開けませんでした。 ファイルの場所を確認してください。 DBCC CHECKDB を実行します。

説明

SQL Server データベース エンジンによって無効なファイル ID が参照されると、クエリまたは操作がエラー 5180 で失敗することがあります。 次に例を示します。

メッセージ 5180、レベル 22、状態 1、行 1
データベース '%.*ls' で無効な ID %d のファイル制御ブロック (FCB) を開けませんでした。 ファイルの場所を確認してください。 DBCC CHECKDB を実行します。

重大度 22 のエラーが発生するため、ユーザーのセッションは切断されます。 このエラー メッセージは、SQL Server エラー ログと Windows アプリケーション イベント ログに EventID = 5180 で記録されます。

考えられる原因

SQL Server データベース エンジンは、さまざまな状況で (ファイル ID はページ ID の最初の部分であるため、ほとんどはページ ID を参照するときに)、ファイル ID を参照します。 何らかの理由で、参照されるファイル ID が < 0 であるか、データベース内の有効なファイル ID ではない場合 (sys.database_filesなどのシステム カタログ ビューに一覧表示されている有効なファイル ID に従います)、5180 エラーが発生する可能性があります。

考えられる原因の 1 つは、格納されているファイル ID が無効であることです。 行内の転送されたレコードは別のページを参照するため、そのページにアクセスしたときにファイル ID が無効である場合は、5180 エラーが発生するおそれがあります。 この状態は、転送されたレコードを含むページでのデータベース破損エラーになります (この例では、DBCC CHECKDB によってメッセージ 8993 が報告されます)。

もう 1 つの例としては、次または前のページ ID のページ ヘッダーに格納されている、ページ ID の一部としての無効なファイル ID が挙げられます。 このフィールドは、クラスター化インデックスのなどの一連のページをリンクするために使用されます。 前のページまたは次のページのファイル ID が無効である場合に、次のページまたは前のページに移動するためにエンジンでこの ID を参照する必要があれば、5180 エラーが発生するおそれがあります (この例では、DBCC CHECKDB によってメッセージ 8981 が報告されます)。

格納されたページ ID が破損しているためにファイル ID が無効であることが問題の原因でない場合は、SQL Server データベース エンジン内に問題があるおそれがあります。

ユーザー アクション

このエラーが発生した場合は、エラー メッセージに示されているデータベースに対して DBCC CHECKDB を実行する必要があります。 エラーが見つかった場合は、正常だとわかっているバックアップから復元する必要があります。 バックアップから復元できない場合は、DBCC CHECKDB の出力で推奨されているように、その修復オプションを使用することをお勧めします。 ほとんどの場合、この種類のエラーを修復すると、データが失われます。 データベース破損の問題の使用方法と原因の詳細については、「 DBCC CHECKDB によって報告されたデータベース整合性エラーのトラブルシューティング方法」を参照してください。

DBCC CHECKDB によってエラーが報告されず、問題が引き続き発生する場合は、Microsoft テクニカル サポートにお問い合わせください。 5180 エラーが発生しているクエリを提供できるように準備してください。 エラーが発生したクエリを確認する方法については、「詳細情報」を参照してください。

詳細情報

ファイル制御ブロック (FCB) は、データベースに関連付けられているファイルに関する重要な情報を追跡する内部メモリ構造です。 ファイル ID は、データベースの FCB を一意に識別するために使用されます。 サーバー エンジンが無効なファイル ID を参照しようとすると、FCB 構造が見つからず、5180 エラー状態がトリガーされます。

このエラーが発生したクエリを確認するには、次の方法を使用します。

  • SQL Server 2008 以降のバージョンについては、system_health セッションにエラーの記録があるかどうかを確認してください。これにはクエリ テキストが含まれます。 system_health セッションの詳細については、資料: 「SQL Server 2008 のサポート: system_health セッション」を参照してください。
  • SQL Server Profiler を使用して、SQL:BatchStartingRPC:Starting、および例外イベントをキャプチャします。 5180 の例外イベントに関連付けられているセッションについて、この例外イベントの前にあるクエリを見つけます。