正在加载中...

sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?

sql server数据库事务日志已满请参阅log_reuse_wait_desc怎么解决?

数据库使用时,莫名其妙出现关于事务日志已满的报错。具体报错如下:

数据库中的事务日志已满。若要查明无法重用日志中的空间的原因,请参阅sys.databases中的log_reuse_wait_desc列。怎么解决呢?万维景盛工程师为您分享解决方案:

dbserver.jpg


运行以下命令:

select name,log_reuse_wait , log_reuse_wait_desc from sys.databases

发现相关数据库的log_reuse_wait_desc 列的内容为active_transaction,说明这个数据库的事务日志在使用中。


运行命令:

DBCC loginfo

dbccinfo.jpg

发现的确有两个数据库事务日志的状态为2,也就是运行中。

这种一般是备份或压缩或还原任务没有完成。

运行命令:

DBCC SHRINKFILE (sell_test1_log)

括号里是要压缩的数据库的逻辑文件名。

压缩完成,再次运行DBCC loginfo,log_reuse_wait_desc 列的内容变成nothing,数据库恢复正常。

如果再次出现active_transaction,那么可能还有备份任务卡住。

那就执行一下全部备份任务,如果备份失败,就查看事务日志,把失败的数据库脱机,再次执行全部备份。成功后,将脱机的数据库联机,再次全部备份,问题就解决。 这样操作的原理是有没完成的事务占用了日志服务,造成日志文件变成只读。数据库事务日志已满的报错实际上是不对的,应该报错日志文件被占用。万维景盛为用户提供上云解决方案一条龙服务,代购阿里云服务器价格实惠,为您制定最省钱高效的解决方案。欢迎垂询。


返回上一页