一个数据库报错问题

时间:2022-12-11 18:55:00
系统,WIN2003,环境,SQL2000 SP4,数据库test,别的数据库一切正常

打开企业管理器,单击test数据库“表”结点,报错:错误7987,在数据库'test'中检测到一个可能的数据库一致性问题。应该对数据库运行DBCC CHECKDB和DBCC CHECKCATALOG。

执行DBCC CHECKDB,提示:
服务器: 消息 8966,级别 16,状态 1,行 1
未能读取并闩锁页 (1:38792)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

执行DBCC CHECKCATALOG,提示:
服务器: 消息 7987,级别 22,状态 2,行 1
在数据库 'test' 中检测到一个可能的数据库一致性问题。应该对数据库 'test' 运行 DBCC CHECKDB 和 DBCC CHECKCATALOG。
'current database' 的 DBCC 结果。

连接中断

表在查询分析器中可以打开,select * from tb无报错信息
select * from sysindexes报错,提示:
服务器: 消息 7105,级别 22,状态 6,行 1
text、ntext 或 image 节点的页 (1:9307),槽 17 不存在。

连接中断

企图用导入导出,把表导入到新数据库中
选择表后,单击“下一步”,提示:
错误源:Microsoft OLE DB Provider for SQL Server
错误描述:在数据库'test'中检测到一个可能的数据库一致性问题。应该地数据库'test'运
行DBCC CHECKDB和DBCC CHECKCATALOG。

上下文:在提供程序上调用OpenRowset时出错

请问各位大大,如何解决,分不够可加

22 个解决方案

#1


先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

#2


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

up

#4


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

海爷、、
没错的。。
就是飘柔一样自信。。
就像飘柔一样值得信赖。。。

#5


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

执行后提示:
未能读取并闩锁页 (1:38792)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

#6


修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

#7


引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法

#8


引用 5 楼 fkcqzwx 的回复:
引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )


执行后提示:
未能读取并闩锁页 (1:38792)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

你的被锁了???/

http://topic.csdn.net/u/20080713/21/a0cef515-771e-4fdd-9841-79f0963b3e19.html

要不然用MDF再附加一次

#9


引用 7 楼 fkcqzwx 的回复:
引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法


批量的得用前台程序来做

#10


检查:dbcc checkdb(’dbname’) 
修复:dbcc checkdb(’dbname’,repair_fast)、dbcc checkdb(’dbname’,repair_rebuild) 
有损修复:dbcc checkdb(’dbname’,repair_allow_data_loss)多次运行

你还是先试下上面的语句

#11


学习

#12


引用 9 楼 fredrickhu 的回复:
引用 7 楼 fkcqzwx 的回复:
引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法


批量的得用前台程序来做

应该可以通过SQL写出来,只是我不会,呵呵

#13


引用 10 楼 fredrickhu 的回复:
检查:dbcc checkdb(’dbname’)
修复:dbcc checkdb(’dbname’,repair_fast)、dbcc checkdb(’dbname’,repair_rebuild)
有损修复:dbcc checkdb(’dbname’,repair_allow_data_loss)多次运行

你还是先试下上面的语句

这些都是不行滴,呵呵

#14


试下8楼的方法,不过事先做好备份

#15


我也是楼主的系统和sql,不过还没遇到这个问题,先顶一下,没准哪天我也遇到了。

#16


学习。

#17


基本上除了导点数据出来外,没什么好的方法了
官方解释:
http://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/19/636410.aspx


 Any error found at this stage cannot be repaired so you must restore from a backup. This is because the repair would have to deallocate the page, effectively deleting metadata for a whole lot of tables and indexes. As people's databases get larger and more complex (thousands of tables and indexes), the percentage of pages that comprise these critical system tables rises and so the chance of a hardware problem corrupting one of these pages also rises - I see several of these a month on the forums. Without a backup, the only alternative is to try to export as much data as you can - not good.

#18


数据库连不上了,还能找到数据来导入另一个库吗?

#19


有没有人帮忙写个语句出来,A,B两个数据库,drop数据库B的所有用户表,把A的所有用户表复制到数据库B

#20


没人回吗?我顶

#21


帮你顶上 关注种 。。

#22


text、ntext 或 image 节点的页 (1:9307),槽 17 不存在

物理性损坏,有些表用SQL是导不出来的.

#1


先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

#2


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

up

#3


#4


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

海爷、、
没错的。。
就是飘柔一样自信。。
就像飘柔一样值得信赖。。。

#5


引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )

执行后提示:
未能读取并闩锁页 (1:38792)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

#6


修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

#7


引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法

#8


引用 5 楼 fkcqzwx 的回复:
引用 1 楼 haiwer 的回复:
先把数据库设置成单用户模式
再在数据库执行
DBCC CHECKDB('test',REPAIR_ALLOW_DATA_LOSS )


执行后提示:
未能读取并闩锁页 (1:38792)(用闩锁类型 SH)。sysindexes 失败。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

你的被锁了???/

http://topic.csdn.net/u/20080713/21/a0cef515-771e-4fdd-9841-79f0963b3e19.html

要不然用MDF再附加一次

#9


引用 7 楼 fkcqzwx 的回复:
引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法


批量的得用前台程序来做

#10


检查:dbcc checkdb(’dbname’) 
修复:dbcc checkdb(’dbname’,repair_fast)、dbcc checkdb(’dbname’,repair_rebuild) 
有损修复:dbcc checkdb(’dbname’,repair_allow_data_loss)多次运行

你还是先试下上面的语句

#11


学习

#12


引用 9 楼 fredrickhu 的回复:
引用 7 楼 fkcqzwx 的回复:
引用 6 楼 haiwer 的回复:
修复失败!


insert 新库名..tb select * from tb

将主要数据搬迁到新库看能不能做到

这一点可以做到,但是数据表比较多,一个个操作可能有点难度,如果实在不能修复,想问问有没有批量操作的方法


批量的得用前台程序来做

应该可以通过SQL写出来,只是我不会,呵呵

#13


引用 10 楼 fredrickhu 的回复:
检查:dbcc checkdb(’dbname’)
修复:dbcc checkdb(’dbname’,repair_fast)、dbcc checkdb(’dbname’,repair_rebuild)
有损修复:dbcc checkdb(’dbname’,repair_allow_data_loss)多次运行

你还是先试下上面的语句

这些都是不行滴,呵呵

#14


试下8楼的方法,不过事先做好备份

#15


我也是楼主的系统和sql,不过还没遇到这个问题,先顶一下,没准哪天我也遇到了。

#16


学习。

#17


基本上除了导点数据出来外,没什么好的方法了
官方解释:
http://blogs.msdn.com/sqlserverstorageengine/archive/2006/06/19/636410.aspx


 Any error found at this stage cannot be repaired so you must restore from a backup. This is because the repair would have to deallocate the page, effectively deleting metadata for a whole lot of tables and indexes. As people's databases get larger and more complex (thousands of tables and indexes), the percentage of pages that comprise these critical system tables rises and so the chance of a hardware problem corrupting one of these pages also rises - I see several of these a month on the forums. Without a backup, the only alternative is to try to export as much data as you can - not good.

#18


数据库连不上了,还能找到数据来导入另一个库吗?

#19


有没有人帮忙写个语句出来,A,B两个数据库,drop数据库B的所有用户表,把A的所有用户表复制到数据库B

#20


没人回吗?我顶

#21


帮你顶上 关注种 。。

#22


text、ntext 或 image 节点的页 (1:9307),槽 17 不存在

物理性损坏,有些表用SQL是导不出来的.