満杯になったトランザクション ログのトラブルシューティング (エラー 9002)

更新 : 2006 年 4 月 14 日

このトピックでは、トランザクション ログが満杯になった場合の対処法について説明し、今後トランザクション ログが満杯になるのを防ぐ方法を示します。トランザクション ログが満杯になると、SQL Server データベース エンジンから 9002 エラーが発行されます。データベースがオンラインまたは復旧中の場合、ログが満杯になることがあります。データベースがオンラインの時にログが満杯になると、データベースはオンラインのままですが、読み取り専用になり、更新できません。復旧中にログが満杯になった場合、データベース エンジンによりデータベースが RESOURCE PENDING としてマークされます。いずれの場合も、ログ領域を使用可能にするためのユーザー操作が必要です。

トランザクション ログが満杯になった場合の対処法

トランザクション ログが満杯になった状況によっては、適切な対処法が異なる場合があります。特定の条件でログの切り捨てができなくなっている原因を見つけるには、sys.database カタログ ビューの log_reuse_wait 列と log_reuse_wait_desc 列を使用します。詳細については、「sys.databases (Transact-SQL)」を参照してください。ログの切り捨てが遅れる原因となるその他の要因の説明については、「ログの切り捨てが遅れる要因」を参照してください。

ms175495.note(ja-jp,SQL.90).gif重要 :
データベースの復旧中に 9002 エラーが発生した場合、問題を解決した後で ALTER DATABASE database_name SET ONLINE ステートメントを使用してデータベースを復旧します。

満杯になったトランザクション ログのその他の対処法には、以下があります。

  • ログをバックアップします。
  • ディスク領域を解放して、ログが自動的に拡張できるようにします。
  • 十分な空き領域があるディスク ドライブにログ ファイルを移動します。
  • ログ ファイルのサイズを増やします。
  • 別のディスクにログ ファイルを追加します。
  • 実行時間の長いトランザクションを完了または強制終了します。

これらの対処法については、次のセクションで説明します。状況に最も適した対処法を選択してください。

ms175495.note(ja-jp,SQL.90).gifメモ :
ログの切り捨てを強制的に行うと、ログ チェーンが壊れて、次回の完全データベース バックアップまでデータベースに脆弱性が残ります。このような理由から、TRUNCATE_ONLY オプションは今後のバージョンの SQL Server の BACKUP ステートメントから削除されます。新しい開発作業では、このオプションの使用は避け、現在このオプションを使用しているアプリケーションは修正するようにしてください。

ログのバックアップ

完全復旧モデルまたは一括ログ復旧モデルでは、トランザクション ログを長期間バックアップしていないと、バックアップによりログの切り捨てが妨げられる場合があります。これまでにログのバックアップをまったく行っていない場合は、2 つのログ バックアップを作成して、データベース エンジンが最後にバックアップされた時点までログを切り捨てられるようにする必要があります。ログを切り捨てると新しいログ レコード用の領域が解放されます。ログが再び満杯にならないようにするには、ログを頻繁にバックアップするようにしてください。

トランザクション ログのバックアップを作成するには

ms175495.note(ja-jp,SQL.90).gif重要 :
データベースが破損した場合は、「ログ末尾のバックアップ」を参照してください。

ディスク領域の解放

他のファイルを削除または移動することによって、データベースのトランザクション ログ ファイルが保存されているディスク ドライブのディスク領域を解放できる場合があります。ディスク領域を解放すると、ログ ファイルは自動的に拡張します。

別のディスクへのログ ファイルの移動

現在ログ ファイルが保存されているドライブでディスク領域を十分に解放できない場合は、十分な空き領域がある別のドライブにファイルを移動することを検討してください。

ms175495.note(ja-jp,SQL.90).gif重要 :
ログ ファイルは、圧縮されたファイル システムには配置しないでください。

ログ ファイルを移動するには

ログ ファイルのサイズの拡張

ログ ディスク上に使用可能な領域がある場合、ログ ファイルのサイズを増やすことができます。

ファイル サイズを増やすには

自動拡張が無効に設定されており、データベースがオンラインで、ディスク上に十分な空き領域がある場合、次のいずれかを実行します。

  • ファイル サイズを手動で増やし、単一の拡張増分値を作成します。
  • ALTER DATABASE ステートメントを使用して自動拡張を有効にし、FILEGROWTH オプションに 0 以外の拡張増分値を設定します。
ms175495.note(ja-jp,SQL.90).gifメモ :
いずれの場合も、現在のサイズ制限に達している場合は、MAXSIZE 値を増やします。

別のディスクへのログ ファイルの追加

ALTER DATABASE <database_name> ADD LOG FILE ステートメントを使用して、十分な領域がある別のディスク上のデータベースに新しいログ ファイルを追加します。

ログ ファイルを追加するには

実行時間の長いトランザクションの特定と管理

詳細については、「実行時間の長いトランザクションの管理」を参照してください。

参照

概念

トランザクション ログ バックアップの作成
ログの切り捨てが遅れる要因
復旧モデルの概要
トランザクション ログの概要
トランザクション ログのバックアップ

その他の技術情報

ALTER DATABASE (Transact-SQL)
トランザクション ログの管理
sp_add_log_file_recover_suspect_db (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手

変更履歴

リリース 履歴

2006 年 4 月 14 日

新しい内容 :
  • 満杯になったトランザクション ログがデータベースの可用性に与える影響についての説明を追加しました。
  • トランザクション ログが満杯になった原因を sys.database を使用して特定する方法についての情報を追加しました。
  • 以前の「ディスク領域の不足に関するトラブルシューティング」に記載されていた 9002 エラーの解決に関する情報を統合しました。