9002: The transaction log for database is full due to ...(トランザクションログが満杯)
SQL Server意味
データベースのトランザクションログファイルが満杯で、新しいトランザクションをログに記録できない。データベースは書き込みを拒否し、読み取り専用のように振る舞うことがある。
原因
FULL 復旧モデルでログバックアップがない、長時間オープンしたままのトランザクション、レプリケーション/AlwaysOn の遅延、またはログが拡張できない (自動拡張の無効化またはディスクの満杯)。log_reuse_wait_desc が理由を示す。
対処方法
sys.databases の log_reuse_wait_desc を確認する。FULL モデルで LOG_BACKUP なら、ログバックアップ (BACKUP LOG) を取得する。ACTIVE_TRANSACTION なら、オープンしたトランザクションを特定してコミット/ロールバックする (DBCC OPENTRAN)。ディスク領域を解放するか、ログファイルの自動拡張設定を修正する。ログが本当に肥大化した場合は、バックアップ後に DBCC SHRINKFILE で圧縮する。ログチェーンが不要なら復旧モデルを見直す。
同じデータベースの他の項目
- 8152String or binary data would be truncated(文字列またはバイナリデータが切り詰められる)
- 2628String or binary data would be truncated in table, column ...; truncated value(文字列またはバイナリデータが切り詰められる (テーブル/列/値を表示))
- 1222Lock request time out period exceeded(ロック要求のタイムアウト期間を超過)
- 1105Could not allocate space for object in database because the filegroup is full(ファイルグループが満杯のため領域を割り当てられない)
- 208Invalid object name(無効なオブジェクト名)
- 229The SELECT/EXECUTE permission was denied on the object(オブジェクトに対する SELECT/EXECUTE 権限が拒否された)
- 4060Cannot open database requested by the login. The login failed(ログインが要求したデータベースを開けない)