
私の DB の 1 つで、トランザクション ログがいっぱいになる問題が発生しています。完全リカバリに設定されており、メンテナンス プランで定期的にバックアップされています。毎週末に完全な DB バックアップを実行し、平日は毎日差分バックアップを実行し、1 時間ごとにトランザクション ログをバックアップしています。ログの切り捨てステータスを確認したところ、現在のステータスは LOG_BACKUP です。オンデマンド バックアップを実行してクリアできますが、メンテナンス プランではクリアされないのはなぜですか。
何が足りないのでしょうか?
答え1
データベースに多数のトランザクションがある場合は、トランザクション ログを 1 時間ごとよりも頻繁にバックアップする必要がある場合があります。15 分ごとは珍しくありません。メンテナンス ジョブを編集して、ログ バックアップをより頻繁に実行することをお勧めします。
また、.ldf には十分なディスク容量がありますか? 物理ファイルの拡張が阻止されている場合、切り捨てを行っても容量が不足します。
答え2
SQL Server のトランザクション ログが「いっぱい」と表示されるか、または拡張する必要があるかどうかは、いくつかの要因によって左右されます。
- 長時間実行されるトランザクション
- 完全または一括ログ復旧モデルの場合のログ バックアップの頻度
- トランザクション ログ内の仮想ログ ファイル (vlfs) の数とサイズ
Jes Schultz Borland は、この仕組みをより詳細に説明した無料ビデオを公開しています。きっと役に立つと思います。http://www.brentozar.com/archive/2012/09/how-sql-server-works-log-file-video/
データ損失を避けることが重要である場合、ログバックアップを定期的に実行してください。1つ1 分というのは珍しいことではありません。最悪のシナリオでどれだけのデータが失われても問題ないかが問題なのです。
答え3
はい。バックアップをまったく取っていない場合に起こります。車の燃料タンクを満タンにせずに仕事を怠ると、タンクが空になってしまうのと同じです。
完全バックアップまたは増分バックアップ後にトランザクション ログは削除される必要があります。バックアップを作成しない場合は、データベース モデルをシンプルに設定します。
定期的に完全バックアップを実行している場合は、誰かがバックアップの方法を知らず、トランザクション ログの削除をシーケンスに含めることを忘れた可能性があります。メンテナンス プランにはそのための設定があります。
ただし、レプリケーションなどを実行すると、遅れが生じた場合にログがブロックされる可能性があります。