视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
DBCCCHECKDB用法手工修复数据库
2020-11-09 08:04:56 责编:小采
文档

快速修复 DBCC CHECKDB ('数据库名', REPAIR_FAST) 重建索引并修复 DBCC CHECKDB ('数据库名', REPAIR_REBUILD) 如果必要允许丢失数据修复 DBCC CHECKDB ('数据库名'', REPAIR_ALLOW_DATA_LOSS) 如果出现错误:未处理修复语句。数据库需处于单用户模式下。

快速修复
DBCC CHECKDB ('数据库名', REPAIR_FAST)
重建索引并修复
DBCC CHECKDB ('数据库名', REPAIR_REBUILD)
如果必要允许丢失数据修复
DBCC CHECKDB ('数据库名'', REPAIR_ALLOW_DATA_LOSS)

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

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

Use master
go
sp_dboption 数据库名, single, true

--更改成单用户
alter database ams2 set single_user with rollback 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 输出了错误信息,请与系统管理员联系。

说明数据库确实有问题,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 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

下载本文
显示全文
专题