実行時間の長いトランザクションの管理
ログがいっぱいになる主な原因として、実行時間の長いトランザクションが挙げられます。実行時間の長いトランザクションがあると、そのトランザクションの最初のログ レコードが格納されている仮想ログ ファイル以降のトランザクション ログがアクティブなままになります。そのため、その仮想ログ ファイル以降の切り捨てができなくなります。
重要 |
---|
実行時間の非常に長いトランザクションがあると、トランザクション ログがいっぱいになります。トランザクション ログがいっぱいになった場合の対応の詳細については、「満杯になったトランザクション ログのトラブルシューティング (エラー 9002)」を参照してください。 |
実行時間の長いトランザクションの検出
実行時間の長いトランザクションを検索するには、以下のいずれかの方法を使用します。
sys.dm_tran_database_transactions
この動的管理ビューは、データベース レベルでのトランザクションに関する情報を返します。実行時間の長いトランザクションで特に関係のある列としては、最初のログ レコードの時間 (database_transaction_begin_time)、トランザクションの現在の状態 (database_transaction_state)、トランザクション ログ内の開始レコードのログ シーケンス番号 (LSN) (database_transaction_begin_lsn) があります。
詳細については、「sys.dm_tran_database_transactions (Transact-SQL)」を参照してください。
DBCC OPENTRAN
このステートメントを使用すると、トランザクション所有者のユーザー ID を特定できます。これにより、トランザクションの実行元を特定して、より規則正しくトランザクションを終了する (トランザクションをロールバックするのではなくコミットする) ことができます。詳細については、「DBCC OPENTRAN (Transact-SQL)」を参照してください。
注 |
---|
ログの切り捨てが遅れる原因となるその他の要因については、「ログの切り捨てが遅れる原因となる要因」を参照してください。 |
トランザクションの停止
KILL ステートメントの使用が必要になる場合もあります。ただし、重要なプロセスが実行中の場合は特に、このステートメントの使用には十分注意してください。詳細については、「KILL (Transact-SQL)」を参照してください。