记一次MSSQL数据库产生大量mdmp文件及解决办法

概述

今天襄阳反馈有台SqlServer服务器后出现“事务日志空间已满”的错误,以为长时间没有截断日志,导致日志文件太大,结果发现不是此问题,观察发现在Sqlserver的Log日志目录中堆积了大量的sqldump*.log,sqldump*.txt,sqldump*.mdmp文件,一分钟有很多个这样的文件,将磁盘空间耗尽。

部分报错:


下面简单介绍下解决过程~


1、检查数据库完整性

DBCC CHECKDB('msdb')


观察结果可以发现sysjobhistory表有问题:

sysjobhistory的 DBCC 结果。
消息 8933,级别 16,状态 1,第 1 行
表错误: 对象 ID 149575571,索引 ID 1,分区 ID 72057594039828480,分配单元 ID 72057594040811520 (类型为 In-row data)。页 (1:1816) 上的低键值(级别 0)不大于等于父代 (1:474) 槽 3 中的键值。
消息 8981,级别 16,状态 1,第 1 行
表错误: 对象 ID 149575571,索引 ID 1,分区 ID 72057594039828480,分配单元 ID 72057594040811520 (类型为 In-row data)。(1:3069) 的下一指针指向页 (1:1820)。但既未遇到 (1:1820),也未遇到其父级。可能是因为链链接错误。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 149575571,索引 ID 1,分区 ID 72057594039828480,分配单元 ID 72057594040811520 (类型为 In-row data)。页 (1:1821) 缺少上一页 (1:1817) 对它的引用。可能是因为链链接有问题。
对象 'sysjobhistory' 的 186 页中有 853 行。
CHECKDB 在表 'sysjobhistory' (对象 ID 149575571)中发现 0 个分配错误和 3 个一致性错误。



2、分析表的索引

DBCC showcontig('sysjobhistory')



3、重建表索引

DBCC DBREINDEX('sysjobhistory')



4、重新检查数据库完整性

DBCC CHECKDB('msdb')



后面会分享更多devops和DBA方面内容,感兴趣的朋友可以关注下!


原文链接:,转发请注明来源!