私は非常に長い間存在していて、さまざまな理由でトランザクションログの自動成長を経験したSQL2005データベースの山を持っています。定期的なバックアップにより、トランザクションログの使用が制御されるようになりましたが、ファイルは依然として大きく、断片化されています。
そのスペースの一部を取り戻し、VLFの数を減らすことでパフォーマンスを向上させたいと思います。ただし、スケジュールされたバックアップを中断したくないこともあります。 DBCC SHRINKFILE()はトランザクションログのバックアップチェーンにどのように影響しますか?それともそうですか?コマンドにTRUNCATEONLYを追加すると、これは変わりますか?
これは1回限りの修正であることに注意してください。ログファイルを定期的に縮小することは悪いことです-これらのデータベースが合理的な初期サイズと自動拡張設定で構成され、バックアップが履歴の毎日完全に実行されていた場合、これは問題にはなりません。
Microsoftサポートごと http://support.Microsoft.com/kb/272318 、SQL Serverは、できるだけ多くのVLFを削除することにより、ログファイルを縮小します。これは、バックアップチェーンを台無しにすることなく、目標サイズに到達しようとしているときに行われます。
ただし、TRUNCATE_ONLYを使用すると、シーケンスが混乱するため、スケジュールされたバックアップの直前に実行するか、直後に完全バックアップを実行する必要があります。
推奨されるアプローチ は、比較的静かな時間(つまり、最小限のログアクティビティ)を選択してから、次の手順を実行します。
もちろん、ログの適切なサイズは、各データベースのログ使用状況の観察結果によって異なります。