修复数据库,应该是一个再熟悉不过的“陌生”东东了。以往修复就使用一般的修复语句即可,今天遇到一个顽固不化的错误,
NND
,
报错信息如下:
服务器
:
消息
8929
,级别
16
,状态
1
,行
1
对象
ID 2:
在文本
ID 177078272
中发现错误,该文本的所有者是由
RID = (1:627:1) id = 1899153811 and indid = 10
标识的数据记录。
服务器
:
消息
8961
,级别
16
,状态
1
,行
1
表错误
:
对象
ID 2
。
text
、
ntext
或
image
节点(位于页
(1:875)
,槽
0
,文本
ID 177078272
)与该节点位于页
(1:500)
,槽
14
处的引用不匹配。
'YINYI'
的
DBCC
结果。
'sysobjects'
的
DBCC
结果。
对象
'sysobjects'
有
419
行,这些行位于
7
页中。
'sysindexes'
的
DBCC
结果。
对象
'sysindexes'
有
451
行,这些行位于
22
页中。
CHECKDB
发现了
0
个分配错误和
2
个一致性错误(在表
'sysindexes'
中,该表的对象
ID
为
2
)。
'syscolumns'
的
DBCC
结果。
CHECKDB
发现了
0
个分配错误和
2
个一致性错误(在数据库
'YINYI'
中)。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
这个是已经经过修复后仍然存在的问题,因为提示的是系统表
sysobjects
表存在问题,且有提示了
RID
及
ID
,我将此条数据查询出来,交核对了同类型的数据库,也就一个栏位不一样,且表示的是一个所影响的行数,其它并无相应的差别。本来打算放弃的,不过后又尝试着将一个经常会使用到的一个表的数据全部清除(
truncate
),再进行
CHECKDB
则不再出现错误。然后将此表中的数据先查询出来放到临时表,再清掉所有的数据,再从临时表中
INSERT
进来,此时再来
CHECKDB
,
CHECKDB
发现了
0
个分配错误和
0
个一致性错误(在数据库
'YINYI'
中)。
DBCC
执行完毕。如果
DBCC
输出了错误信息,请与系统管理员联系。
大功告成,此现象说明了其实
CHECKDB
出来若存在系统表有问题的情况下,我们的系统不会那么容易坏的。你首先需要检查的是你平时会用到的表,即使是
CHECKTABLE
也不一定会出错,只能根据你软件中在哪一个点儿会弹错,分析用到的表,进行依次的排除。
此篇文章写到这里希望遇到类似“表错误: 对象 ID 2。text、ntext 或 image 节点(位于页 (1:875),槽 0,文本 ID 177078272)与该节点位于页 (1:500),槽 14 处的引用不匹配”问题的朋友们细心点儿,希望对大家有帮助!3Q3Q~~~