私は同様の質問に対してもう1つの答えをしようとしていますが、トランザクションログを切り捨てるのが200GBであるログと20GB近辺で見た多くの例のログが異なるかどうか尋ねたいと思っていましたか?大規模なトランザクションログを切り捨てる代替戦略はありますか? (> 200gb)
その他の質問は20GBのトランザクションログを取り、1MBに減らします.10倍のサイズのトランザクションログでは戦略は異なりますか?
私は同様の質問に対してもう1つの答えをしようとしていますが、トランザクションログを切り捨てるのが200GBであるログと20GB近辺で見た多くの例のログが異なるかどうか尋ねたいと思っていましたか?大規模なトランザクションログを切り捨てる代替戦略はありますか? (> 200gb)
その他の質問は20GBのトランザクションログを取り、1MBに減らします.10倍のサイズのトランザクションログでは戦略は異なりますか?
「ログの切り詰め」はあいまいな用語です。 DBCC SHRINKFILEを使用してトランザクションログのLDFファイルを縮小すると仮定しています。
いいえ、プロセスは大きく異なりません。
注意:トランザクションログが使用されるため、必要なサイズに縮小するには、ログファイルを2倍に縮小する必要があります。
目的のデータベースに対して実行DBCC LOGINFO
、あなたは、トランザクション・ログ内の各VLF(仮想ログファイル)を参照してくださいよ。ステータスが2のものはすべてアクティブでログバックアップを待っています。ログバックアップを行わずにDBCC SHRINKFILEを実行すると、Statusが2の最大StartOffset + FileSizeが最小サイズになります。
トランザクションログのバックアップを実行すると、VLF現在使用されているステータスは2のままです。まだ使用されているので、まだアクティブです。私が知る限り、最大のFSeqNoを持つDBCC LOGINFOにリストされているVLFは、現在使用されているVLFです。つまり、LOG BACKUPを実行してすぐにDBCC SHRINKFILEを実行した場合、最小サイズは最大FSeqNoを持つVLFのStartingOffset + Filesizeになります。 VLFがいっぱいになるのを待つ必要があり、ログバックアップでこのVLFが非アクティブとマークされる前に、サーバーは新しいVLFに切り替わり、DBCC SHRINKFILEを小さくすることができます。
ので、ログファイルを縮小するための最善の戦略は次のとおりです。
から
#1 &#2は、サーバーを正しく管理している場合にのみ可能です。将来的にサーバーを再訪する必要がありますが、将来問題が発生するのを防ぐためには不可欠です。
シンプルリカバリモードを実行していないと仮定しています。シンプルリカバリを使用しているデータベースの200GBトランザクションログは比較的ありそうにないためです。万一単純なリカバリを実行している可能性がある場合は、上記のBACKUP LOGをCHECKPOINTコマンドに置き換えることができます。