SQL server のトランサクションログの圧縮方法
SQL Server Management Studio にて、未使用ログ領域の切り捨て -> ログファイルの圧縮 という手順
1. オブジェクトエクスプローラで対象のデータベースを選択
2. 選択したデータベースを右クリック -> データベースのプロパティ -> オプション
-> 復旧モデル を "完全" から "単純" に変更する
3. 使用領域の確認
選択したデータベースを右クリック -> 新しいクエリ -> 以下のコマンドを実行
DBCC SQLPERF('LOGSPACE') -> 各データベースの ログファイルサイズと空きスペースの表示
SELECT * FROM sys.database_files -> 対象データベースのデータベースおよびトランザクションログの使用領域
4. 未使用ログ領域の切り捨て
選択したデータベースを右クリック -> タスク -> バックアップ -> そのまま OK
コマンドで実行するなら、
”BACKUP LOG [対象のデータベース名] TO DISK=[バックアップ先のパス/ファイル名] WITH INIT
既に過去のバックアップファイルが存在している場合、以下のコマンドの実行により、
バックアップファイルを改めて取得しなくともよい
BACKUP LOG [対象のデータベース名] TO DISK='NULL'
※ 通常、ログの切り捨ては自動的に行われる
単純復旧モデルではデータベースのバックアップ時
完全復旧モデルではトランザクション ログのバックアップ時
5. ログファイルの圧縮
タスク -> 圧縮 -> データベース -> 圧縮アクション で "未使用領域の開放前..." にチェックをつけ、
"圧縮後のファイル..." の欄に "0" を指定する -> OK とする
コマンドで実行するなら、
DBCC SHRINKFILE (<FileName>, <TargetSize>) WITH NO_INFOMSGS
※ 単純復旧モデルで、圧縮を行うと、バックアップ/ログの切り捨ても自動的に行われる
6. 圧縮後の確認
以下のコマンドでログファイルサイズと空きスペースを確認
DBCC SQLPERF('LOGSPACE')
7. 選択したデータベースを右クリック -> データベースのプロパティ -> オプション
-> 復旧モデル を "完全" に戻しておく
(SQL Server 2008 R2、Windows Server 2008 R2)