检索数据库出错

terry20080416 2011-11-15 09:37:13
我用CHECKDB 检索数据库出错, 修复后还是报此错, 请问有什么好方法可以修复呀
急!!!!!!!

索引分配映射(IAM)页 (1:701) (位于对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 26308542726144 (类型为 Unknown))的上一个指针指向了 IAM 页 (0:0),但扫描过程中检测不到它。
消息 2576,级别 16,状态 1,第 1 行
索引分配映射(IAM)页 (1:3576) (位于对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 27223169368064 (类型为 Unknown))的上一个指针指向了 IAM 页 (0:0),但扫描过程中检测不到它。
消息 2576,级别 16,状态 1,第 1 行
索引分配映射(IAM)页 (1:18103) (位于对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 307334734807040 (类型为 Unknown))的上一个指针指向了 IAM 页 (0:0),但扫描过程中检测不到它。
消息 2576,级别 16,状态 1,第 1 行
索引分配映射(IAM)页 (1:12918) (位于对象 ID 0,索引 ID -1,分区 ID 0,分配单元 ID 307699903168512 (类型为 Unknown))的上一个指针指向了 IAM 页 (0:0),但扫描过程中检测不到它。
消息 2576,级别 16,状态 1,第 1 行
...全文
157 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
中国风 2011-11-15
  • 打赏
  • 举报
回复
那用生成新日志文件的方法

可尝试分离附加,只附加数据库文件,生成新的日志文件
CREATE DATABASE DBName ON ( FILENAME = N'DBFile' ) FOR ATTACH_REBUILD_LOG

不能附加时
1、停止数据库服务。
2、将需要恢复的数据库文件复制到另外的位置。
3、启动数据库服务。
4、确认要恢复的数据库文件已经成功复制到另外的位置,然后在SQL Server Management Studio中删除要恢复的数据库。
5、新建同名的数据库(数据库文件名也要相同)。
6、停止数据库服务。
7、用第2步中备份的.mdf文件覆盖新数据库的同名文件。
8、启动数据库服务。
9、运行alter database dbname set emergency,将数据库设置为emergency mode
10、运行上面的命令恢复数据库:
terry20080416 2011-11-15
  • 打赏
  • 举报
回复
只有几个表
中国风 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 terry20080416 的回复:]

还是不行, 命令成功执行, 但SELECT查询时还是报错

消息 0,级别 11,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。
消息 0,级别 20,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。
[/Quote]
所有表都出错?
terry20080416 2011-11-15
  • 打赏
  • 举报
回复
还是不行, 命令成功执行, 但SELECT查询时还是报错

消息 0,级别 11,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。
消息 0,级别 20,状态 0,第 0 行
当前命令发生了严重错误。应放弃任何可能产生的结果。
中国风 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 terry20080416 的回复:]

4楼
关键是数据表里面有数据,读不出来, 导入到新库应该也导入不了
各位有没有什么好的修复软件,急呀!
[/Quote]
--重建一下索引试试,按照上面方法,应该不会出现读不出来数据这情况
use db
go
exec sp_msforeachtable 'ALTER INDEX ALL ON ? REBUILD '
terry20080416 2011-11-15
  • 打赏
  • 举报
回复
4楼
关键是数据表里面有数据,读不出来, 导入到新库应该也导入不了
各位有没有什么好的修复软件,急呀!
--小F-- 2011-11-15
  • 打赏
  • 举报
回复
应该是你的MDF文件损坏 没救了。
中国风 2011-11-15
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 terry20080416 的回复:]

这个方法我已经试过了, 不行, 修复后用CHECKDB(database)检索, 还是这些错误, 有没有其它方法
[/Quote]

那估计没救了,这样操作,把这个数据库生成结构脚本,用脚本建一新库,把数据导入新库。
terry20080416 2011-11-15
  • 打赏
  • 举报
回复
另外我的数据库是SQL2008的
terry20080416 2011-11-15
  • 打赏
  • 举报
回复
这个方法我已经试过了, 不行, 修复后用CHECKDB(database)检索, 还是这些错误, 有没有其它方法
中国风 2011-11-15
  • 打赏
  • 举报
回复
首先把数据库备份一份,再修复

SQL2005方法

use master

declare @databasename varchar(255)

set @databasename='要恢复的数据库名称'

exec sp_dboption @databasename, N'single', N'true' --将目标数据库置为单用户状态

dbcc checkdb(@databasename,REPAIR_ALLOW_DATA_LOSS)

dbcc checkdb(@databasename,REPAIR_REBUILD)

exec sp_dboption @databasename, N'single', N'false'--将目标数据库置为多用户状态

上面的方法是通过.mdf文件恢复数据库,即使log文件丢失也可以恢复。

22,209

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧