概述
今天襄阳反馈有台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方面内容,感兴趣的朋友可以关注下!
