監視システムにより、SQL Server インスタンスをホストするサーバーのドライブの空き容量が不足しているという警告が出されました。トランザクション ログ ファイルが非常に大きくなっており、ファイルに空き容量がないためファイルを縮小できないことが判明しました。ログ ファイルが大きくなる原因を特定するには、どのような手順を踏めばよいでしょうか。
答え1
トランザクション ログが制御不能に増大している場合は、ログを切り捨てるトランザクション ログ バックアップを実行していることを確認してください。
長時間実行されているオープン トランザクションが、トランザクション ログの増加の原因となっている可能性があります。SQL Server Management Studio (SSMS) の DBCC OPENTRAN ステートメントを使用して、SQL Server インスタンス上で最も長時間実行されているトランザクションを確認します。オープン トランザクションがある場合は、トランザクションがオープンされている接続の session_id (SPID) が提供されます。次に、その SPID と sp_who2 ストアド プロシージャを使用して、トランザクションがどの接続に属しているかを確認できます。その SPID を強制終了できます。
その後、データベースの復旧モデルを FULL から SIMPLE に切り替えて、データベースを縮小してみてください。データベースを FULL に戻すことはできますが、完全バックアップとトランザクション ログ バックアップの実行をスケジュールする必要があります。そうしないと、問題が再度発生します。
トランザクション ログが予期せず大きくなるもう 1 つの原因として、データベースがレプリケーション/ミラーリングに参加していないこと、およびこのデータベースと他のデータベース間の通信が失われている可能性があります。何らかの理由で 2 つのデータベース間のリンクが影響を受けると、トランザクション ログは、ミラーリングされたデータベースから確認応答を受信するまで、プリンシパル データベース上で大きくなり続けます。その結果、トランザクション ログが大きくなり、領域が再利用されなくなります。