SSブログ

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)


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。