SQL2000置疑数据库修复

本文提供了一套针对SQL Server 2000版本数据库损坏后的详细修复步骤,包括检查数据库状态、停止服务并备份文件、重建日志文件及修复数据库等关键环节。

SQL置疑数据库修复
说明:[dbname]为示例置疑数据库。此方法只适应SQLServer2000。

请先检查一下:
USE master
go
SELECT * FROM sysdatabases WHERE name='dbname'
 
--检查这个数据库还存在不。
如果存在,请按下面的方法操作,如果不存在,请新建一个名称不同数据库,将数据库文件和日志文件放在置疑数据库文件夹下。以便移动,接下面来还是接下面的方法进行修复。

use master
go
dbcc checkdb(dbname) --如果返回结果出现了红色的提示文字,说明数据库中存在错误,需要修复
go

查询分析器返回错误信息,检查出现那些错误情况(下面我会讲怎样识别数据库损坏的情况),请尝试以下步聚恢复数据库.

1.停止SQL Server的服务,备份SQL Server安装目录下的data子目录下故障数据库的两个文件,一个数据文件dbname_data.mdf,一个dbname_log.ldf(也有可能非此命名),同时查看磁盘空间是否有足够的空间;

3.把sql安装目录中的data文件夹下的LDF文件(dbname_log.ldg)删除。
4.重新启动SQL Server服务,然后运行如下命令:

Use Master
go
sp_configure 'allow updates', 1
reconfigure with override
go
update sysdatabases set status = 32768 where name = 'dbname'
go
SHUTDOWN  --停止SQL

6.停止SQL后重新启动SQL Server服务,然后重建日志文件(经验告诉我在没有出现在dbcc checkdb修复数据库时出回避模式下可在直接创建日志文件,如果出现,在status = 28下创建日志文件):

use master
go
DBCC REBUILD_LOG('dbname','D:/Data/Datadbname_log.ldf')
go
SHUTDOWN  --停止SQL


7.停止SQL后重新启动SQL Server服务,然后运行:

use master
go
update sysdatabases set status = 28 where name = 'dbname'
go

sp_configure 'allow updates', 0
reconfigure with override
go

8.修复数库
--请只打开查询分析器中执行下列语句.执行前断开其它所有数据库连接,最好是断开网线

USE master
Go
--单用户模式,也可在企业管理员右击此数据库选项上选上单用户。经验告诉给我,手动在企业数据库里设置单用户最好。
ALTER DATABASE dbname SET SINGLE_USER
go
--修复数据库
DBCC CHECKDB ('dbname','REPAIR_REBUILD') --建议使用
--OR
DBCC CHECKDB('dbname','REPAIR_ALLOW_DATA_LOSS') --出现一致性错误和分配页错误,使用高级别的修复级别

 

--通常情况下我不会建议采用'REPAIR_ALLOW_DATA_LOSS'来修复数据库,因为可能会丢失数据的
--如果你检查出来是一两个表出现错误的话,请用下面的语句修复
DBCC CHECKTABLE('表名','REPAIR_REBUILD')
OR
DBCC CHECKTABLE('表名','REPAIR_ALLOW_DATA_LOSS') --意义同上
Go

--再次数据库检查,如果返回结果中没有了红色的提示文字,说明修复成功;
DBCC CHECKDB ('dbname')
--如果检查出来还出现红色字,这意味着还需要更高级别的修复;尝试将上面修复语句的'repair_rebuild'换为'repair_allow_data_loss'再试,之后再次检查数据库。
Go
--退出前请一定要执行以下语句返回到多用户模式
ALTER DATABASE dbname SET MULTI_USER
go


 

企业管理器--右键suspect的数据库--所有任务--分离数据库      然后备份你的suspect数据库的文件,再按下面的步骤处理:      1.新建一个同名的数据库      2.再停掉sql server      3.用suspect数据库的文件覆盖掉这个新建的同名数据库      4.再重启sql server      5.此时打开企业管理器时新建的同名数据库会出现置疑,先不管,执行下面的语句(注意修改其中的数据库名)      USE MASTER   GO      SP_CONFIGURE 'ALLOW UPDATES',1 RECONFIGURE WITH OVERRIDE   GO      UPDATE SYSDATABASES SET STATUS =32768 WHERE NAME='his222'   Go      sp_dboption 'test', 'single user', 'true'   Go      DBCC CHECKDB('test')   Go      update sysdatabases set status =28 where name='test'   Go      sp_configure 'allow updates', 0 reconfigure with override   Go      sp_dboption 'test', 'single user', 'false'   Go      6.完成后一般就可以访问数据库中的数据了,这时,数据库本身一般还要问题,解决办法是,利用   数据库的脚本创建一个新的数据库,并将数据导进去就行了.      如果这样改不加数据库状态,你就把数据库导成一个新库来代替旧库吧      企业管理器--右键你的数据库--所有任务--导出数据        --目标标数据库选择新建        --选择"在两个sql数据库之间复制对象和数据"        --把"包含扩展属性"选上,其他的根据需要选择        --最后完成 问题是恢复后数据的确是可以使用,但数据就少了许多,最近的数据也只有8.16日的数据。 求求各位有没有更好的方法恢复呢,不然我就好坎坷.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值