案例分析:SQL SERVER数据库备份未完成导致简单模式下日志无法收缩问题原创
金蝶云社区-无涯有涯
无涯有涯
4人赞赏了该文章 1,228次浏览 未经作者许可,禁止转载编辑于2022年03月15日 08:51:04
summary-icon摘要由AI智能服务提供

客户反映SQL Server数据库在简单恢复模式下日志每天增长约10G,且无法释放空间。分析发现,日志状态为“ACTIVE_BACKUP_OR_RESTORE”,因有长时间未完成的备份操作导致日志无法截断。建议检查备份耗时原因并中止当前备份,以解决日志持续增长问题。

一、问题现象

某客户反馈数据库恢复模式是简单,但是日志每天增加10G左右,不重启数据库服务无法释放、收缩日志空间。如图可看到约52G日志。

image.png

二、分析过程

一般来说,简单模式的SQL SERVER不会有太多的日志,即使是有些业务存在大事务,一般只要事务完成了,日志空间应能释放重用,现场这种情况说明数据库事务日志存在活动的较大日志。

1、在master库执行以下查询以确认日志状态,可收缩的日志应显示为NOTHING状态,可看到异常的数据库事务日志显示“ACTIVE_BACKUP_OR_RESTORE”。

select name, database_id, log_reuse_wait, log_reuse_wait_desc from sys.databases;

image.png

2、参考微软文档解决事务日志已满的问题:是什么阻止了日志截断? 进一步定位日志无法截断的原因,执行建议的SQL后,得到如下结果

image.png

3、此处给出了一条SQL可进一步确认日志占用的原因,执行上图红框部分内容,可得如下图结果(第一部分)

image.png4、结果显示确实有一SQL进程在执行备份操作,其spid为80,通过 dbcc inputbuffer(80),我们得到完整的SQL内容,证实确实是此数据库有一个备份未完成。综合现场其他方面信息发现此备份操作可能是一个维护计划的一部分,并且执行时间已经很久了,建议现场检查备份异常耗时原因,当前的备份操作可中止。

三、附录

日志文件的状态,可以参考事务日志文件不断增长的八个原因可能延迟日志截断的因素

赞 4