The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

时间:2022-06-07 17:03:46

Msg 9002, Level 17, State 4, Line 4
The transaction log for database 'Test' is full due to 'ACTIVE_TRANSACTION'.

本定一个测试库错误,由于此库的LOG文件被设置成不允许自动增长,而在大量输入数据的时候报出此错。此库已经使SIMPLE恢复模式。

--数据库当前LOG状态

select log_reuse_wait_desc from sys.databases
where name = 'Test'

log_reuse_wait_desc
ACTIVE_TRANSACTION

--LOG 使用情况

dbcc sqlperf(logspace)

Database Name Log Size (MB) Log Space Used (%) Status
Test       1.984375   118.3071 0

最吃惊的是它的使用率是118%,那多出来的18%空间给那来的?

--再看看它的虚拟日志情况

DBCC loginfo

--这个显示只有一个是活动的,其它的都可以使用的。又一个奇怪的信息

The transaction log for database 'XXX' is full due to 'ACTIVE_TRANSACTION'.

这种状态下,数据库基本上是一个只读状态。

那这个时候怎么解决,按Troubleshoot a Full Transaction Log 再加一个LOG文件就可以了。看文档上说,可能还有在恢复数据库的时候也遇到这种错。那个文档上有处理方法。