web-dev-qa-db-ja.com

DBCC SHRINKFILE()はバックアップにどのように影響しますか?

私は非常に長い間存在していて、さまざまな理由でトランザクションログの自動成長を経験したSQL2005データベースの山を持っています。定期的なバックアップにより、トランザクションログの使用が制御されるようになりましたが、ファイルは依然として大きく、断片化されています。

そのスペースの一部を取り戻し、VLFの数を減らすことでパフォーマンスを向上させたいと思います。ただし、スケジュールされたバックアップを中断したくないこともあります。 DBCC SHRINKFILE()はトランザクションログのバックアップチェーンにどのように影響しますか?それともそうですか?コマンドにTRUNCATEONLYを追加すると、これは変わりますか?

これは1回限りの修正であることに注意してください。ログファイルを定期的に縮小することは悪いことです-これらのデータベースが合理的な初期サイズと自動拡張設定で構成され、バックアップが履歴の毎日完全に実行されていた場合、これは問題にはなりません。

2
sh-beta

Microsoftサポートごと http://support.Microsoft.com/kb/272318 、SQL Serverは、できるだけ多くのVLFを削除することにより、ログファイルを縮小します。これは、バックアップチェーンを台無しにすることなく、目標サイズに到達しようとしているときに行われます。

ただし、TRUNCATE_ONLYを使用すると、シーケンスが混乱するため、スケジュールされたバックアップの直前に実行するか、直後に完全バックアップを実行する必要があります。

5
Richard

推奨されるアプローチ は、比較的静かな時間(つまり、最小限のログアクティビティ)を選択してから、次の手順を実行します。

  1. ログをバックアップする
  2. ログファイルをDBCCSHRINKFILE with TRUNCATEONLYで縮小して、できるだけ小さくします
  3. ALTER DATABASE MODIFY FILEを実行して、ログのサイズを適切なサイズに変更します

もちろん、ログの適切なサイズは、各データベースのログ使用状況の観察結果によって異なります。

4