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

数据库修复过程中发生的问题
我的修复语句:
USE MASTER
 ALTER DATABASE TESTSJ SET EMERGENCY
 exec sp_configure 'allow updates',1 RECONFIGURE WITH OVERRIDE
 exec sp_dboption 'TESTSJ', 'single user', 'true'
 dbcc checkdb(TESTSJ,REPAIR_ALLOW_DATA_LOSS)
 exec sp_dboption 'TESTSJ', 'single user', 'false'
 exec sp_configure 'allow updates',0 reconfigure with override 
 ALTER DATABASE TESTSJ SET ONLINE

输出结果:

配置选项 'allow updates' 已从 0 更改为 1。请运行 RECONFIGURE 语句进行安装。
TESTSJ的 DBCC 结果。
消息 8978,级别 16,状态 1,第 1 行
表错误: 对象 ID 13,索引 ID 1,分区 ID 851968,分配单元 ID 851968 (类型为 In-row data)。页 (1:58945) 缺少上一页 (1:58944) 对它的引用。可能是因为链链接有问题。
系统无法自己修复此错误。
CHECKDB 在表 'sys.syshobtcolumns' (对象 ID 13)中发现 0 个分配错误和 1 个一致性错误。
消息 7995,级别 16,状态 1,第 1 行
数据库 'TESTSJ': 系统目录中存在一致性错误,无法继续处理 DBCC checkdb。
CHECKDB 在表 'ALLOCATION' (对象 ID 99)中发现 0 个分配错误和 1 个一致性错误。
CHECKDB 在数据库 'TESTSJ' 中发现 0 个分配错误和 2 个一致性错误。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
配置选项 'allow updates' 已从 1 更改为 0。请运行 RECONFIGURE 语句进行安装。


高手们,帮帮忙啊!dbcc checkdb(TESTSJ,REPAIR_ALLOW_DATA_LOSS)的修复选项,我都试了,不行,这该怎么办啊?

------解决方案--------------------
你这个貌似需要用:dbcc checktable而不是checkdb了。如果checktable不行的话再试试:

将所有的数据库的MDF,LDF拷贝保存(系统库的不需要). 

重装SQL,然后将MDF,LDF拷贝回DATA目录下. 

然后在查询分析器里面使用sp_attach_db附加数据库. 
EXEC sp_attach_db @dbname = N 'pubs ', 
@filename1 = N 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs.mdf ', 
@filename2 = N 'c:\Program Files\Microsoft SQL Server\MSSQL\Data\pubs_log.ldf ' 
------解决方案--------------------
那你新建一个库,把数据导过去试试,这是最后一个办法了
------解决方案--------------------
页链错误,典型的数据页损坏,加我QQ(156817731),给你个小工具可以检测出来哪些页有问题
------解决方案--------------------
如果你有数据库备份的话可以考虑还原PAGE页,这个应该是最方便最快捷的。