私は偶然のDBAであり、いくつかのデータベースのトランザクションログファイルに関する一連のアクションを決定するのに助けが必要です。 Brent Ozarのsp_blitzを実行して、SQL Server 2012のインスタンスにどのような懸念があるかを確認したところ、データファイルよりも大きいトランザクションログファイルが1つありました。 1つのデータベースでは、データファイルは3.33 GBで、ログは5.19 GBです。他はほぼ同じ比率を持っています。
このシナリオの説明では、データベースが完全復旧モードの場合にのみ、ログファイルを圧縮する必要がある可能性があることを示しています。このデータベースは単純復旧に設定されています。
ログファイルを圧縮する必要がありますか、それともそのままにしておきますか?
御時間ありがとうございます。
ジェフ、ブレント。そのURLには多くのドキュメントを配置します。URLをコピーして、Webブラウザに ドキュメント全体を読む に貼り付けてください。
単純な復旧モデルを使用していて、データベースよりも大きいログファイルがある場合、考えられる原因はたくさんあります。
私のより大きな懸念は、データベースが単純な復旧モデルにあるという事実です。つまり、ポイントインタイムリカバリは実行できません。何か問題が発生した場合は、最後の適切な完全バックアップまで復元しています。多くの場合、企業はデータの損失が多いため不快です。
したがって、ブレントの回答の項目を最初に調査する必要があります。別の方法で修正する必要がある、より大きな問題がないことを確認してください。
しかし一度実行すれば、進行中の問題がなく、過度のログの増加は、その後解決した問題が原因でした。例えば:
このような場合、大きなログファイルはほぼ完全に空になるため、ログをより適切なサイズに圧縮しても問題ありません。
その際の注意点:
ターゲットサイズは、データベースで予想されるアクティビティによって大きく異なります。特にシンプルモードでは、データベースのsedデータ領域よりも大きなログは必要ありません。
すべてを理解したら、次のようなステートメントを使用してログを圧縮します。
DBCC SHRINKFILE (name = 'mydb_log', size = 2000)
これにより、ログファイルが2GBに縮小されます。
アクティブなトランザクションがすぐに縮小するのを妨げる可能性があります。その場合は、トランザクションが完了するのを待って、後でコマンドを繰り返します。
完全復旧モードのデータベースに対してこれを実行している場合は、圧縮してからログバックアップを実行し、再度ターゲットサイズに縮小する必要があります。