检查数据库日志,有如下报错信息:
Error: 9002, Severity: 17, State: 4.
The transaction log for database 'SharedServices1_Search_DB' is full. To find out why space in the log cannot be reused, see the log_reuse_wait_desc column in sys.databases
查看当前日志的使用情况:
这里日志并没有完全满,但已经占用70GB日志文件的79%,也有50多GB了,个人感觉这是不正常的。个人曾经读过《SQL Server 2012实施与管理实战指南》,在日志这一块有这么一段描述:
由于应用程序设计问题,有些连接可能会遗留一个事务在SQL Server里面,而不是及时提交它,SQL Server是不会干预用户的这种行为的。只要这个连接不退出,这个事务会永远存在,直到客户端主动提交或者回滚。从这个事务开启的那个时间点开始的所有日志记录,SQL Server都会保留(做过日志备份也没有用)。
本文描述了如何处理SQL Server中遇到的事务日志已满的问题。通过检查数据库日志状态,发现日志文件占用比例过高,怀疑存在长事务。通过查询sys.databases视图确认日志正等待transaction的检查点。进一步排查发现存在运行近90分钟的长事务,并提供了查看事务详细信息的方法,以便与开发人员合作解决问题。
最低0.47元/天 解锁文章
440

被折叠的 条评论
为什么被折叠?



