sqlserver数据库文件损坏修复后报错的问题

sqlserver检测到基于一致性的逻辑I\O逻辑错误 校验和不正确

问题描述:常青客户反馈生成水费报错,数据库备份也失败了(如下图),报的错是:读取失败:23(数据错误(循环冗余检查)。)
经水司查询,服务器硬盘无问题,那么就是数据库文件损坏了。


之后水司在外面找人修复了数据库文件,这个问题得以解决,也可以正常备份了。

但出现了新的问题:sqlserver检测到基于一致性的逻辑I\O逻辑错误 校验和不正确


执行以下语句可以修复(需要停止数据库的使用):

  --设置成单用户

ALTER DATABASE ydcqBigfootMis SET SINGLE_USER

--检查数据库

DBCC CHECKDB (ydcqBigfootMis, repair_allow_data_loss) with NO_INFOMSGS

go

--完成后设置回多用户

ALTER DATABASE ydcqBigfootMis SET MULTI_USER

go


执行结果如下图:






CHECKDB 在表'tMeterRead' (对象ID 701961577)中发现0 个分配错误和8 个一致性错误。

CHECKDB 在表'tMeterRead' (对象ID 701961577)中修复了0 个分配错误和8 个一致性错误。

CHECKDB 在数据库'ydcqBigfootMis' 中发现0 个分配错误和8 个一致性错误。

CHECKDB 在数据库'ydcqBigfootMis' 中修复了0 个分配错误和8 个一致性错误。


至此,数据库一致性错误已被修复,可正常使用了。