使用以下脚本检查:

DBCC SQLPERF(LOGSPACE)
GO
SELECT name,recovery_model_desc,log_reuse_wait,log_reuse_wait_desc
FROM sys.databases
GO

  如果Log Space Used(%)很高,要马上定位为什么不能被清除。如果状态为:LOG_BACKUP,意味(此处原为以为,感谢kalagooooo的细心发现,现以改正过来)着SQLServer,意味着SQLServer等待着日志备份。要检查是否需要做日志备份。

  步骤2:检查久的活动事务:

  如果大部分日志都在使用中且重用状态为:ACTIVE_TRANSACTION,那么要看看久的事务是谁申请的:

DBCC OPENTRAN
GO
SELECT  *
FROM    sys.dm_exec_sessions AS t2 ,
        sys.dm_exec_connections AS t1
        CROSS APPLY sys.dm_exec_sql_text(t1.most_recent_sql_handle) AS st
WHERE   t1.session_id = t2.session_id
        AND t1.session_id > 50

  执行后返回:

  找出久的事务之后,先要检查是否有问题,如果有问题,那么好从应用层面把事务提交或回滚。如果实在不行,那使用KILL SPID来杀掉进程。