SQL SERVER中一张表损坏了,没有备份文件,如何将这张表修复一下呢?在线等待

如题所述

第1个回答  2012-08-31
从你的出错来看“ 0 个分配错误和 1 个一致性错误”可能是索引问题,一致性出错多数情况是索引问题,你可以drop 所有索引,再检查一下表。

另数据库比较保守的修复方法是
DBCC CHECKDB('数据库名',REPAIR_REBUILD )
因为REPAIR_ALLOW_DATA_LOSS
尝试修复报告的所有错误。这些修复可能会导致一些数据丢失。
REPAIR_REBUILD
执行不会丢失数据的修复。这包括快速修复(如修复非聚集索引中缺少的行)以及更耗时的修复(如重新生成索引)。
第2个回答  2012-08-31
试下能不能把表的数据导出来select * into temp from table,然後重新该表,再将会数据导回。追问

我试过了,不行,执行这个语句会报错,因为这张表损坏了,

追答

错误提示是什麼?

追问

SQL Server 检测到基于一致性的逻辑 I/O 错误 校验和不正确(应为: 0xf9235ff8,但实际为: 0x887abf8f)。在文件 'D:\SMB6Database\SMB6Comp08_Dat.MDF' 中、偏移量为 0x0000000056a000 的位置对数据库 ID 11 中的页 (1:693) 执行 读取 期间。请执行完整的数据库一致性检查(DBCC CHECKDB)

第3个回答  推荐于2018-05-10
--先检查是否有报错
dbcc checktable('表名')

--有报错,就修复
use master
GO
-- sp_dboption 用于显示或更改数据库选项。当为 single user 选项为 true 时,每次只能有一个用户访问数据库。
sp_dboption '数据库名','single user','true'
DBCC CHECKDB('数据库名',REPAIR_ALLOW_DATA_LOSS)
sp_dboption '数据库名','single user','false'追问

我执行了一下你给的答案,结果出现这样的错误。
表错误: 分配单元 ID 851968,页 (1:651)。测试(IS_OFF (BUF_IOERR, pBUF->bstat))失败。值是 29362441 和 -4。

CHECKDB 发现有 0 个分配错误和 1 个一致性错误与任何单个的对象都没有关联。
CHECKDB 在数据库 'SMB6Comp08' 中发现 0 个分配错误和 1 个一致性错误。

追答

修复了没有

追问

没有,没办法修复,错误还是有的

追答

悲催啊,看你的另一个错误提示,i/o问题,不是你的硬盘爆掉了吧。

本回答被提问者和网友采纳
相似回答