実行時間の長いトランザクションの管理

ログがいっぱいになる主な原因として、実行時間の長いトランザクションが挙げられます。実行時間の長いトランザクションがあると、そのトランザクションの最初のログ レコードが格納されている仮想ログ ファイル以降のトランザクション ログがアクティブなままになります。そのため、その仮想ログ ファイル以降の切り捨てができなくなります。

重要な注意事項重要

実行時間の非常に長いトランザクションがあると、トランザクション ログがいっぱいになります。トランザクション ログがいっぱいになった場合の対応の詳細については、「満杯になったトランザクション ログのトラブルシューティング (エラー 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)」を参照してください。