4

SQL Server ログ ファイルを明確にする方法を探しています。なんらかの理由で最近バックアップされていない大規模なデータベース (2GB) があります。データベースのログ ファイルは、データベースで発生したすべてのトランザクションとステートメントであると理解しており、約 11 GB まで大きくなりました。

私の質問:

データベース ログ ファイルがフラッシュされる原因は何ですか? 「フラッシュ」とは実際にはどういう意味ですか?大きなログ ファイルに対してファイルの圧縮またはデータベースの圧縮を行うと、どのような影響がありますか?

4

3 に答える 3

9

トランザクションログをバックアップすると、それらのトランザクションはログから切り捨てられますが、操作で使用されたスペースは自動的に回復されません。定期的なトランザクションログのバックアップを行っている場合、これは良いことです。トランザクションに使用されているスペースであり、将来再び必要になることを前提としています。トランザクションログを継続的に縮小すると、パフォーマンスが低下する可能性があります。これは、必要になったときにデータベースがログを拡張する必要があるためです。

したがって、問題を修正するには、最初に完全バックアップとトランザクションログバックアップを実行します。シンプルモードやシングルユーザーに移行する必要はありません。次に、データベースを縮小し、数時間ごとにトランザクションログのバックアップを設定します。私のサーバーでは10分ごとに実行しますが、環境に必要な頻度によって異なります。ログサイズがどのように変化するかを監視し、定期的に拡張する必要がないように十分なスペースを残し、さらに楽しみのために少し余分なスペースを確保してください。

データベースを縮小する場合は、DBCCSHRINKDATABASEではなくDBCCSHRINKFILEを使用してください後者、ログファイルだけでなくデータベース全体を縮小するためです。また、回復するスペースの量を制御することもできません。

于 2009-01-17T21:57:30.263 に答える
3

バックアップは通常、トランザクション ログをクリアします。トランザクション ログには、最後のバックアップ以降のすべての変更が保持されます。データベースのバックアップ方法によっては、完全なトランザクション ログを保持する必要がない場合があります。MS SQL2000/MS SQL2005 を使用している場合、復旧モードをSimpleに設定すると、トランザクション ログがなくなります。

データベースのクリーン コピーがあること (損失のリスクがないこと) を確認したら、トランザクション ログを安全に削除できます。それを行うためのSQLコマンドがいくつかありますが、通常はリカバリモードをSimpleに変更してからデータベースを縮小し、必要に応じてリカバリモードをFullに戻します.

さらに詳しい情報が必要な場合は、使用している SQL のバージョンとバックアップの実行方法を含めてください。特定の設定についてもう少し詳しく説明できるかどうかを確認します。

于 2009-01-17T19:39:00.247 に答える
2

実際、データベースをバックアップしてもログが縮小するとは思いません。トランザクション ログ自体をバ​​ックアップすると、ログが縮小します。SQL Server はこの 2 つを区別します。

通常、すべてのデータベースを「単純な」復旧にするか、トランザクション ログのバックアップを定期的な保守計画の一部にします (通常は週に 1 回)。

于 2009-01-17T20:20:38.523 に答える