数据库 CHECKDB 发现了x个分配错误和 x 个一致性错误

浏览: 4248
问题描述:查询 select * from table1 和 select count(1) from table1 查询的结果不一样,其他的表都没有问题。可能是由于该表损坏,然后尝试修复此表。使用 DBCC CHECKTABLE(table1 )进行修复,报错:0个分配错误和 1个一致性错误。

环境说明
数据库:sqlsqlserver2005
数据库名:dbname
最近检测数据库发现报错一大片
dbcc checkdb(dbname)
错误描述:CHECKDB 发现了 0 个分配错误和 22 个一致性错误(在数据库 'dbname' 中)。

解决方案:
一般情况下,引起分配错误的原因是磁盘损坏或突然停电;一致性错误可能是数据库中的表或索引坏,一般都可修复。
1、查看红色字体,并把有错误的数据库表名记录下来,或把索引损坏的表名记录下来。
2、把数据库设置为单用户模式,直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user', 'TRUE'.
3、进入查询分析器执行如下语句:
use dbname
dbcc checkdb('dbname',repair_allow_data_loss)-------修复数据库
dbcc checkdb ('dbname',REPAIR_REBUILD)----------------修复数据库索引
4、再执行:dbcc checkdb,检测数据库,出现结果为:
CHECKDB 发现了0个分配错误和 0个一致性错误(在数据库 'dbname' 中)。
数据库已经修复完毕。
5、取消单用户模式,即直接在查询分析器中执行以下语句即可:
EXEC sp_dboption 'dbname', 'single user','FALSE'

推荐 0
本文由 梁勇 创作,采用 知识共享署名-相同方式共享 3.0 中国大陆许可协议 进行许可。
转载、引用前需联系作者,并署名作者且注明文章出处。
本站文章版权归原作者及原出处所有 。内容为作者个人观点, 并不代表本站赞同其观点和对其真实性负责。本站是一个个人学习交流的平台,并不用于任何商业目的,如果有任何问题,请及时联系我们,我们将根据著作权人的要求,立即更正或者删除有关内容。本站拥有对此声明的最终解释权。

0 个评论

要回复文章请先登录注册