如何识别和修复SIMPLE恢复模型数据库上事务日志增长的原因?

我最近将SQL Server 2008安装升级到了Service Pack 2.我们的数据库之一是简单的恢复模式,但是它的事务日志不断增长。 该日志似乎不被截断,因为它应该在简单的恢复模式下。

我目前正在研究的path是,我们有一个地方的事务处于活动状态。 这是为什么:

select name, recovery_model_desc, log_reuse_wait_desc from sys.databases where name in ('SimpleDB') name recovery_model_desc log_reuse_wait_desc SimpleDB SIMPLE ACTIVE_TRANSACTION 

当我检查我的活动交易时,我得到以下。 请注意,我安装了SP2,并在12月25日午夜左右重新启动了我们的服务器。

 select transaction_id, name, transaction_begin_time, transaction_type from sys.dm_tran_active_transactions transaction_id name transaction_begin_time transaction_type 233 worktable 2010-12-25 12:44:29.283 2 236 worktable 2010-12-25 12:44:29.283 2 238 worktable 2010-12-25 12:44:29.283 2 240 worktable 2010-12-25 12:44:29.283 2 243 worktable 2010-12-25 12:44:29.283 2 245 worktable 2010-12-25 12:44:29.283 2 62210 tran_sp_MScreate_peer_tables 2010-12-25 12:45:00.880 1 55422856 user_transaction 2010-12-28 16:41:56.703 1 55422889 SELECT 2010-12-28 16:41:57.303 2 470 LobStorageProviderSession 2010-12-25 12:44:30.510 2 

请注意,根据文档 ,1的transaction_type表示读/写,而2表示只读。

所以,我的思路是,trans_sp_MScreate_peer_tables事务由于某种原因被卡住,并阻止事务日志截断。 这是一个合理的情况吗? 纠正我,如果我的思路是closures的,因为我不是一个SQL Server专家。 如果这是正确的,我该如何清除那个事务,以便像往常一样截断我的事务日志?

运行“DBCC OPENTRAN”,它会告诉你在数据库中运行时间最长的spid。 一定要在有问题的数据库的上下文中运行它。