- トランザクションログを手動で強制的に切り捨ての必要が発生する可能性があるのは、復旧モデルが [完全] [一括ログ] を使用していて、定期的にトランザクションログのバックアップを取得しておらず、トランザクションログの領域が圧迫してしまった場合
- トランザクション ログがいっぱいになった場合は、トランザクション ログ ファイルのバックアップを直ちに作成してください。
- トランザクション ログ ファイルのバックアップの作成中に、トランザクション ログのアクティブでない部分が SQL Server により自動的に切り捨てられます。
- トランザクション ログ ファイルのアクティブでない部分には、完了したトランザクションが含まれます。そのため、そのトランザクション ログ ファイルが以降の復旧処理で SQL Server によって使用されることはありません。
- トランザクション ログの拡張でさらに多くの領域を使用できるようにするのではなく、トランザクション ログ内の切り捨てられたアクティブでない領域を再利用します。
- Truncate メソッドを使用して、トランザクション ログ ファイルからアクティブでないトランザクションを削除できます。
ログファイル縮小方法 †
縮小化 †
復旧モデルを変更せずに縮小化する方法
- DBバックアップ
- バックアップの種類:完全で バックアップ
- バックアップの種類:トランザクションログ でバックアップ
- SQL Server Management Studioで以下の操作を実行
- オブジェクトエクスプローラから、該当のDBをを右クリック
- [タスク][圧縮]→[ファイル]を選択
- [ファイルの圧縮]画面が開く
- ファイルの種類を「ログ」に変更
- 圧縮アクションを「未使用領域の解放前にページを再構成する」に変更し、ファイルサイズを指定(あくまで目標値なので、とりあえず2MBと指定)
- 圧縮を実行
- 一度で小さくならないことがあるので、その場合はDBバックアップから再実行
強制切り捨て †
- 復旧モデルを「単純復旧モデル」に変更する
- [DBCC SQLPERF(‘LOGSPACE’)] を使用して、トランザクションログの使用状況を確認
- [ALTER DATABASE [DB名] SET RECOVERY SIMPLE] を実行
- [DBCC SQLPERF(‘LOGSPACE’)] を使用して、トランザクションログの使用状況が減ったのを確認
- SQL Server Management Studioで以下の操作を実行
- オブジェクトエクスプローラから、該当のDBをを右クリック
- [タスク][圧縮]→[ファイル]を選択
- [ファイルの圧縮]画面が開く
- ファイルの種類を「ログ」に変更
- 圧縮を実行