SQL 数据库错误修复

前天一个客户的服务器突然断电,当时正有应用程序在频繁的读写数据库,导致数据库文件损坏。虽然使用下面的方法修复了“数据库可疑”问题,但是当访问某个具体的表时仍然会报出异常如下:

经过多方查找找到修复方法。

修复可疑数据库方法:

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'--将目标数据库置为多用户状态

 

修复表访问提取逻辑页方法:

如果DBCC CHECKDB 检查仍旧存在错误,可以使用DBCC CHECKTABLE来修复。 

use 需要修复的数据库实体的名称

declare @dbname varchar(255)

set @dbname='需要修复的数据库的名称'

exec sp_dboption @dbname,'single user','true'

dbcc checktable('需要修复的数据表的名称',REPAIR_ALLOW_DATA_LOSS)

dbcc checktable('需要修复的数据表的名称',REPAIR_REBUILD)

------把’ 需要修复的数据表的名称’更改为执行DBCC CHECKDB时报错的数据表的名称

exec sp_dboption @dbname,'single user','false'

其他的一些修复语句:

DBCC DBREINDEX 重建指定数据库中表的一个或多个索引 
用法:

DBCC DBREINDEX (表名,’’) 修复此表所有的索引。


4.DBCC CHECKALLOC 
检查指定数据库的磁盘空间分配结构的一致性

posted @ 2017-06-05 10:21  啊礼  阅读(425)  评论(0)    收藏  举报