1、DBCC CHECKDB 用法 手工修复数据库 快速修复DBCC CHECKDB (数据库名, REPAIR_FAST) 重建索引并修复DBCC CHECKDB (数据库名, REPAIR_REBUILD)如果必要允许丢失数据修复DBCC CHECKDB (数据库名, REPAIR_ALLOW_DATA_LOSS)如果出现错误:未处理修复语句。数据库需处于单用户模式下。可以先启用单用户模式,方法如下执行存储过程:Use mastergosp_dboption 数据库名, single, true-更改成单用户 alter database ams2 set single_user with r
2、ollback immediate -还原数据库为多用户模式 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 输出了错误信息
3、,请与系统管理员联系。 说明数据库确实有问题,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_allo
4、w_data_loss) go 执行结果: 服务器: 消息 7919,级别 16,状态 3,行 2 未处理修复语句。数据库需要处于单用户模式下。 DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。 - 需要将数据库改为“单用户模式“, 于是再执行: -更改成单用户 alter database ams2 set single_user with rollback immediate 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