SQL SERVER事务日志增长过快

原文链接:https://www.jianshu.com/p/f59e41a2ea5e

https://www.modb.pro/db/42341

https://www.cnblogs.com/ajiangg/p/4397654.html

https://zhuanlan.zhihu.com/p/388206056

https://www.likecs.com/show-308535681.html#sc=841.3333129882812

问题排查过程:

1、输入查看SQL日志文件大小命令:

DBCC SQLPERF(LOGSPACE)
 

检查发现日志的绝大部分都在使用中(log space used)很高,说明日志记录不能被sqlserver清除掉,需要找原因。

 

2、执行指令:

DBCC loginfo()

Status列就是VLF的状态,0代表reusable或者unused,2则代表active或者recoverable;只有处于reusable和unused状态时,VLF才可以通过日志截断来释放空间。

3、输入指令:

SELECT name,recovery_model_desc,log_reuse_wait,log_reuse_wait_desc
FROM sys.databases
GO

 

 我们可以根据结果中输出的log_reuse_wait和log_reuse_wait_desc的值来查找原因。

NOTHING:当前有一个或多个可重用的虚拟日志文件;

LOG_BACKUP:意味着SQLServer等待着日志备份。要检查是否需要做日志备份。

 

4、使用DBCC Opentran语句,最常用的场景是数据库对象(例如表)被一个事务长久地锁住了,但是你不知道是哪一个事务锁住了数据库对象,就可以使用DBCC Opentran语句查看当前最早开启事务的SPID,如果确认该事务是因为误操作或者应用程序Bug,所以一直没有被提交或回滚,那么可以使用KILL语句强制结束该事务的SPID,从而人工干预结束事务。

 

以上是搜集的各种资料,也学到了对数据库的一些分析方法,我解决的办法是重新删除以前的备份计划,重新做新的计划就好了。可能是因为升级数据库导致的。

 

posted @ 2023-01-06 11:45  yinghualeihenmei  阅读(1137)  评论(0编辑  收藏  举报