日期:2014-05-17  浏览次数:20586 次

求救:SQL2000 823错误
执行查询:
select * from data

报错:服务器: 消息 823,级别 24,状态 2,行 1  连接中断


执行语句:

USE MASTER 
GO 
sp_dboption 'aa', 'single user', 'true'
 Go 
DBCC CHECKDB('aa',REPAIR_ALLOW_DATA_LOSS)
 Go
 USE aa 
go 
exec sp_msforeachtable "dbcc checktable('?',repair_rebuild)"
 go 
sp_dboption 'aa', 'single user', 'false'



报错:

服务器: 消息 8976,级别 16,状态 1,行 1
表错误: 对象 ID 891202275,索引 ID 1。在扫描操作中未发现页 (1:1445),而其父代 (1:11816) 和上一页 (1:23253) 指向了该页。请检查先前的错误。
服务器: 消息 8976,级别 16,状态 1,行 1
表错误: 对象 ID 891202275,索引 ID 1。在扫描操作中未发现页 (1:1446),而其父代 (1:29520) 和上一页 (1:26727) 指向了该页。请检查先前的错误。
服务器: 消息 8976,级别 16,状态 1,行 1
表错误: 对象 ID 891202275,索引 ID 1。在扫描操作中未发现页 (1:1447),而其父代 (1:31433) 和上一页 (1:35728) 指向了该页。请检查先前的错误。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。
        DBCC 语句的修复级别导致回避了此修复。







注:aa是 数据库名,data是表名

------解决方案--------------------
你做了备份吗,如果有备份,可以通过数据库备份和日志备份,来进行还原的。
------解决方案--------------------
索引页损坏?
DBCC DBREINDEX (表名,’’) 试试修复这些表上的索引看看。 

然后重新 DBCC CHECKDB,看还报错不。

不过这样有丢一部分数据的可能。 lz要做好备份工作。

------解决方案--------------------
能导多少就导多少到DATAB吧,没办法喽
可以试着加WHERE条件按区段取数据试试
------解决方案--------------------
你看有多少个表select时出现这种情况?做个统计
这是磁盘扇区有些损坏了读取不出数据的,需要从备份数据库获取这些表的数据。先把这个表删除,再从备份表重新获取这些数据。
------解决方案--------------------
试试这个:

http://blog.csdn.net/sqlserverdiscovery/article/details/6667179
------解决方案--------------------
引用:
非常感谢楼上两位的答复,DBCC命令试过了,修复不了,出问题的是data这个表,单独打开表返回所有行没有问题,到查询分析器去SELECT表的数据时提示823这个错误,请问重建一个结构与data一样的表dataB,有没有办法把data里面正常的数据导入到dataB,错误的页面数据不要了

注:数据库由于突然断电之后硬盘出问题经过修复的,备份文件用不了了


你说单独打开表,返回所有行没问题,能不能把数据导入到excel里呢,你看看这个文章:

http://blog.csdn.net/hank5658/article/details/7954455
------解决方案--------------------
DBCC解决不了的数据损坏,可以看看这个工具  http://blog.csdn.net/dlcyj/article/details/9330607
------解决方案--------------------
重建一个结构与data一样的表dataB,然后导入数据到dataB,
加不同where条