文档库

最新最全的文档下载
当前位置:文档库 > DBCC_CHECKDB用法_手工修复数据库

DBCC_CHECKDB用法_手工修复数据库

DBCC CHECKDB用法手工修复数据库

快速修复

DBCC CHECKDB ('数据库名', REPAIR_FAST)

重建索引并修复

DBCC CHECKDB ('数据库名', REPAIR_REBUILD)

如果必要允许丢失数据修复

DBCC CHECKDB ('数据库名'', REPAIR_ALLOW_DATA_LOSS)

如果出现错误:未处理修复语句。数据库需处于单用户模式下。

可以先启用单用户模式,方法如下执行存储过程:

Use master

go

sp_dboption 数据库名, single, true

exec sp_dboption Database 'single user','fales'--多用户模式

--更改成单用户

alter database ams2 set single_user with rollback immedi ate

--还原数据库为多用户模式

alter database ams2 set multi_user with rollback immediate

############################################################ ############################################################

手工修复数据库试例

操作步骤:

----------------------------------------------------------------------------------------------

进入SQL查询分析器,执行语句:

--检查数据库完整性

dbcc checkdb('ams1')

执行结果:

---------------------------------------------------------------

CHECKDB 发现了0 个分配错误和11 个一致性错误(在数据库'ams1' 中)。

repair_allow_data_loss 是最低的修复级别(对于由DBCC CHECKDB (ams1 ) 发现的错误而言)。

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

说明数据库确实有问题,11个错误,找到错误地方:

-------------------------------------------------------------------------------

对象'Tb_Archives_File_1' 有3777 行,这些行位于172 页中。CHECKDB 发现了0 个分配错误和2 个一致性错误(在表

'Tb_Archives_File_1' 中,该表的对象ID 为907150277)。

表明'Tb_Archives_File_1' 表确实有2个错误,难怪一查询就要死机,于是运行语句进行表修复:

-------------------------------------------------------------------------------------- --以repair_allow_data_loss级别修复表

dbcc checktable('Tb_Archives_File_1',repair_allow_data_loss)

go

执行结果:

服务器: 消息7919,级别16,状态3,行2

未处理修复语句。数据库需要处于单用户模式下。

DBCC 执行完毕。如果DBCC 输出了错误信息,请与系统管理员联系。

---------------------------------------------------------------------------------------------------

需要将数据库改为"单用户模式",于是再执行:

--更改成单用户

alter database ams2 set single_user with rollback immedi ate

go

--已repair_allow_data_loss级别修复表

dbcc checktable('Tb_Archives_File_1',repair_allow_data_loss) go

--若还有问题,修复索引表

DBCC DBREINDEX('Tb_Archives_File_1')

--再修复表

DBCC CHECKTABLE('Tb_Archives_File_1')

直到返回的结果没有错误!

--查询是否正常

select * from Tb_Archives_File_1

再查询那张错误表,不报错,也不死机了,数据也完好无损.....哈哈....

--还原数据库为多用户模式

alter database ams2 set multi_user with rollback immediate