次の方法で共有


MSSQLSERVER_9004

適用対象:SQL Server

詳細

属性
製品名 SQL Server
イベント ID 9004
イベント ソース MSSQLSERVER
コンポーネント SQLEngine
シンボル名 LOG_CORRUPT
メッセージ テキスト データベース '%.*ls' のログを処理中にエラーが発生しました。 可能な場合は、バックアップから復元してください。 バックアップを使用できない場合は、ログの再構築が必要になることがあります。

説明

ロールバック、復旧、またはレプリケーションの操作で、ログの処理中にエラーが発生しました。 これは、オペレーティング システムによって検出されたエラーか、SQL Server によって検出された内部的な整合性エラーを示している可能性があります。
SQL Server データベース エンジン では、トランザクション ログの内容を読み取ったり処理したりするときに、その整合性に関する論理チェックが実行されます。 ログ ヘッダー、ログ ブロック、ログ レコードのすべての側面がチェックされるわけではありません。 状態番号により、エラーの種類に関する詳細情報が提供されます。

  • 状態 1 仮想ログ ファイル (VLF) のログ ファイル ヘッダーが破損しています。 サービスの開始時にデータベースを起動する際に、破損したログ ファイル ヘッダーが見つかった場合は、ERRORLOG にエラー 9004 だけが表示されることがあります。 ログ ファイル ヘッダーは、トランザクション ログ内の各 VLF の最初の部分です。 ログ ファイル ヘッダーは、ログ ファイルの 1 つのファイル ヘッダー (または先頭の 8 KB) と同じではありません。 ログ ファイルのファイル ヘッダーが破損していた場合は、データベースファイルのヘッダーページの破損と同様に、メッセージ 5172 が表示されることがあります。
  • 状態 2 と 3 RESTORE 操作中に回復を実行するときに、ログ ブロックが無効でした。
  • 状態 4 から 12 これらはすべて、ログ レコードを処理する際のログ ブロックに関するさまざまなチェックです。 これには、パリティ、セクター、およびトランザクション ログの整合性に関するその他の論理チェックが含まれます

ほとんどの場合、このエラーは、ERRORLOG または Windows アプリケーション イベント ログのみに EventID = 9004 で表示されます。これは、このログを処理する操作が直接のユーザー コマンドに基づいていないためです (SQL Server エンジンの起動時に実行される復旧など)。 このような状況では、エラー 9004 がエラー 3414 と共に表示されることがよくあります。 ただし、ALTER DATABASE などの一部のクエリでは、このログの処理が必要になり、したがってこれらのエラーが表示される可能性があります。 このエラーは Severity=21 であるため、ユーザー セッションは切断されます。

原因

エラー 9004 は、トランザクション ログの内容が破損していることを示す一般エラーです。 ログが不整合になる理由は、SQL Server エンジンによって検出されるデータベース破損の問題に似ています。 ログの破損の原因を調べるには、可能性のあるハードウェア、ファイルシステム、I/O の問題の分析など、データベースの破損に対して使用するのと同様の手法に従う必要があります。 DBCC CHECKDB では、その操作の一部としてトランザクション ログはチェックされず、ログ破損エラーを検出できないことに注意してください。 エラー 9004 は、SQL Server エンジン自体によって発生します。

ユーザーの操作

次のいずれかのアクションでこのエラーを修正します。

  • バックアップからの復元: 既知の適切なバックアップから復元して、この問題から回復します。 データベースのログ部分またはログ バックアップに破損した内容が含まれていると、RESTORE の実行時にエラー 9004 が発生する可能性があります。 この状況では、バックアップに含まれるトランザクション ログが破損しています。

  • ログを再構築する: バックアップから復元できない場合は、トランザクション ログを再構築することでデータベースをオンラインにできる場合があります。 トランザクション ログの再構築がもたらす影響について、注意深く理解する必要があります。 これには、"データベース内のトランザクションの整合性が失われる可能性" が含まれます。 トランザクション ログを再構築する方法の詳細については、「データベース緊急モードでのエラーの解決」をご覧ください。

  • ログでシステム問題を調べる:さらに、システム イベント ログと Errorlogs をチェックして、システム内の問題がエラーの原因になっていないか調べます。