当我发现事务日志只能正确截断时 - 我正在调查SQL Server 2005事务日志的快速增长 - 如果sys.databases"log_reuse_wait"列设置为0 - 这意味着什么都不会阻止事务日志重用现有空间.
有一天,当我打算备份/截断日志文件时,我发现此列在tempdb中有一个4或ACTIVE_TRANSACTION.然后,我使用DBCC OPENTRAN('tempdb')和sysprocesses中的open_tran列检查任何打开的事务.结果是我在系统中的任何地方都找不到活动事务.
log_reuse_wait列中的设置是否准确?是否存在使用上述方法无法检测到的交易?我只是缺少一些明显的东西吗?
我仍然不知道为什么我在sys.databases log_reuse_wait_desc列中看到ACTIVE_TRANSACTION - 当没有事务正在运行时,但我的后续经验表明tempdb的log_reuse_wait列由于不太清楚的原因而更改,并且我的目的,不是很相关.此外,我发现在查找事务信息时,运行DBCC OPENTRAN或"从sysprocess中选择open_tran"代码的信息要少于使用以下语句:
select * from sys.dm_tran_active_transactions select * from sys.dm_tran_session_transactions select * from sys.dm_tran_locks