概述:SQL Server 2014数据库产生大量SQLDump故障转移文件,经查是特定数据库T_BAS_SCHEDULEINFOLOG表存在一致性错误。通过dbcc checktable定位问题后,备份并删除问题表,从正常数据库重建该表,解决故障转移文件生成问题,确保系统稳定。
问题描述
SQL 数据库安装目录下不停的产生 SQLDump****.mdmp故障转移文件,每一分钟都产生一堆文件,如下图所示;
一直这样下去会导致C盘爆满
分析处理过程
1、数据库版本是2014 64位;
查看上图路径下时间最新的txt日志文件(日志文件原文可下载附件),比如SQLDump****.txt,找到SPID,如下图;
2、根据SPID 173,在数据库里面执行语句,
dbcc inputbuffer (173)
可找到正在执行的语句;如下;
(@FInfoLogID varchar(36),@FScheduleTypeId varchar(23),@FINFONOTES nvarchar(109),@FInfoStatus varchar(1),@FLogCreateDate datetime)INSERT INTO T_BAS_SCHEDULEINFOLOG (FInfoLogID, FScheduleTypeId, FINFONOTES, FInfoStatus, FLogCreateDate) VALUES (@FInfoLogID, @FScheduleTypeId, @FINFONOTES, @FInfoStatus, @FLogCreaCteDate)
3、然后,对每一个云星空的数据中心对应的数据库实体,分别执行如下语句,
dbcc checktable(T_BAS_SCHEDULEINFOLOG)
发现AIS20200810141940_data这个数据库有报错,如下图所示;(具体错误见附件txt文件)
文字版的执行结果的最后一部分,如下;
CHECKTABLE 在表 'T_BAS_SCHEDULEINFOLOG' (对象 ID 1965327603)中发现 0 个分配错误和 321 个一致性错误。
对于由 DBCC CHECKTABLE (AIS20200810141940_data.dbo.T_BAS_SCHEDULEINFOLOG)发现的错误,repair_allow_data_loss 是最低的修复级别。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
而在其他数据中心里面执行
dbcc checktable(T_BAS_SCHEDULEINFOLOG)
都是没有报错的。
4、由于这个有报错的数据中心是客户的一个历史备查账套,且T_BAS_SCHEDULEINFOLOG这个表是执行情况日志表;
经客户同意,先把这个数据库实体做完整备份;
然后执行语句
drop table T_BAS_SCHEDULEINFOLOG
把这个表删除;如下图所示;
5、然后,在其他正常的云星空数据库实体下,找到这个表T_BAS_SCHEDULEINFOLOG,按下图操作;
把上图操作所显示出的语句复制下,然后给里面去执行这个语句,即可对这个数据库重建了这个表了。
然后重新对这个库,执行dbcc checktable(T_BAS_SCHEDULEINFOLOG)语句,已经不报错了,见附件截图。
6、经过一段时间的观察,确认C:\Program Files\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Log路径下已经没有每分钟不停地产生故障转储文件了,问题解决。
扩展知识
1、SQL server数据库安装目录下发现大量 SQLDump****.mdmp故障转移文件
附件.rar(16.75KB)
推荐阅读