管理长时间运行的事务

一个可能导致日志填满的原因是长时间运行的事务。长时间运行的事务可使事务日志从包含事务的第一条日志记录的虚拟日志文件开始,便一直保持活动状态。从最前面的虚拟日志文件开始,不会发生截断。

重要说明重要提示

长时间运行的事务会导致事件日志填满。有关响应已满事务日志的信息,请参阅解决事务日志已满的问题(错误 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)