ここでいくつかの興味深い提案がありますが、これらはすべて、ログバックアップの仕組みについての誤解を示しているようです。ログバックアップには、その間に行われた完全バックアップまたは差分バックアップに関係なく、前回のログバックアップ以降に生成されたすべてのトランザクションログが含まれます。ログバックアップを停止したり、毎日の完全バックアップに移動しても、ログバックアップのサイズには影響しません。トランザクションログに影響するのは、ログバックアップチェーンが開始された後のログバックアップのみです。
このルールの唯一の例外は、ログバックアップチェーンが破損した場合です(たとえば、SIMPLE復旧モデルに移動し、データベーススナップショットから復帰し、BACKUP LOG WITH NO_LOG / TRUNCATE_ONLYを使用してログを切り捨てます)。その場合、最初のログバックアップ最後の完全バックアップ以降のすべてのトランザクションログが含まれます。これにより、ログバックアップチェーンが再起動されます。または、ログバックアップチェーンが開始されていない場合-初めてFULLに切り替えると、最初の完全バックアップが取得されるまで、一種の擬似SIMPLEリカバリモデルで動作します。
元の質問に答えるには、単純な復旧モデルに入らずに、すべてのトランザクションログをバックアップする必要があります。実行するアクションに応じて、より頻繁にログバックアップを実行してサイズを削減するか、よりターゲットを絞ったデータベースを実行できます。
行っているメンテナンス作業に関する情報を投稿できる場合は、それらの最適化を支援できます。インデックスの再構築に続いてデータベースの縮小を行い、インデックスの再構築に使用されたスペースを再利用しますか?
メンテナンスの実行中にデータベースに他のアクティビティがない場合は、次を実行できます。
- ユーザーのアクティビティが停止していることを確認してください
- 最終ログバックアップを取得します(これにより、メンテナンス開始時点まで回復できます)。
- SIMPLE復旧モデルに切り替える
- メンテナンスを実行する-ログは各チェックポイントで切り捨てられます
- 完全復旧モデルに切り替えて、完全バックアップを取得します
- 通常どおり続行
これがお役に立てば幸いです-詳細情報を楽しみにしています。
ありがとう
[編集:完全バックアップが後続のログバックアップのサイズを変更できるかどうかについての議論の後(不可能)、背景資料とそれを証明するスクリプトを含む包括的なブログ投稿をまとめました。https://www.sqlskills.com/blogs/paul/misconceptions-around-the-log-and-log-backups-how-to-convince-yourself/で確認してください。