トランザクションログをバックアップしてもトランザクションログファイルが圧縮されない

チップ・ハムリン
質問: トランザクションログファイル(ldf)が小さくならない
トランザクションログファイルが大きくなったので、トランザクションログファイルをバックアップして、ファイルの圧縮をしたのですが、ファイルのサイズが小さくならないです。 どうすればよいでしょうか?

トランザクションログをバックアップしてもトランザクションログファイルが圧縮されない現象について紹介します。

現象

SQL Serverでは通常トランザクションログをバックアップすれば、トランザクションログの切り捨てが行われ、 トランザクションログファイルのファイルサイズが縮小するはずですが、トランザクションログのバックアップをしても、トランザクションログのファイルサイズが小さくなりません。

原因

一度目のトランザクションログバックアップ時にはファイル終端が以前の位置のままであることが原因となっている可能性があります。

調査方法

次のSQLコマンドを実行します。

SELECT name, recovery_model_desc, log_reuse_wait_desc FROM sys.databases WHERE name = N'(対象のデータベース名)';


以下の結果が表示されます。

namerecovery_model_desclog_reuse_wait_desc
(データベース名)FULLLOG_BACKUP


log_reuse_wait_desc の値が、"LOG_BACKUP"になっている場合は、再度のログバックアップが必要です。
表示される値は以下があります。

意味
NOTHING ログ再利用の妨げは基本なし
LOG_BACKUP ログバックアップが必要
ACTIVE_TRANSACTION 未完了トランザクションが残っている
REPLICATION レプリケーション関連で保持中
AVAILABILITY_REPLICA Always On関連で保持中


再度ログバックアップを実行して、結果がNOTHING であることを確認して、ファイルの圧縮を実行します。

namerecovery_model_desclog_reuse_wait_desc
(データベース名)FULLNOTHING

対処法

log_reuse_wait_descの値がLOG_BACKUPであった場合、トランザクションログのバックアップをもう一度実行します。 バックアップ完了後、データベースの圧縮を実行すると、トランザクションログのファイルサイズを縮小できる場合があります。

データベースのバックアップ手順はこちらの記事を参照してください。 また、データベースの圧縮手順はこちらの記事を参照してください。


AuthorPortraitAlt
著者
iPentec.com の代表。ハードウェア、サーバー投資、管理などを担当。
Office 365やデータベースの記事なども担当。
作成日: 2018-03-07