数据库文件损坏后的恢复方法
来源:互联网 发布:最大的源码交易平台 编辑:程序博客网 时间:2024/05/01 21:11
2008年7月7日,星期一,数据库服务器的磁盘阵列卡坏了,硬件维护人员更换了磁盘阵列卡,但是系统的数据库文件已经损坏。用了两天的时间恢复该数据库。数据库使用的是SQLSERVER2000,数据库名是regie_sc_sj,数据库文件名regie_sc_sj_data.mdf.
问题检查过程
1、在企业管理器中专卖数据库的状态是置疑,用以下命令修复数据库状态:
USE master
GO
sp_configure 'allow updates', 1
GO
RECONFIGURE WITH OVERRIDE
GO
sp_resetstatus 'regie_sc_sj'
但是修复不成功,无法找到该数据库。检查发现数据库文件没有丢失,只是数据库文件没有连接到SQLSERVER中。
2、通过SQLSERVER的企业管理器将数据库文件附加到SQLSERVER中,也没有成功,报错为“823” 磁盘故障造成的问题。
3、将数据库文件复制到其它机器上,并且在新的机器上附加到企业管理器中,出现相同的报错。说明磁盘的故障已经损坏了数据库文件。该数据库上次备份是在2004年,时间太久已经无法使用这个备份文件,现在只能尽量恢复现有的数据库文件。
修复过程
1、在master库的sysdatabases表中添加专卖数据库信息:
Use Master
--修改系统属性,允许修改系统表的内容
sp_configure 'allow updates', 1
reconfigure with override
--添加专卖数据库信息到sysdatabases表中,其中status=32768表示紧急模式
insert into sysdatabases(name,dbid,sid,mode,status,status2,crdate,reserved,category,cmptlevel,filename)
values ( 'regie_sc_sj',10,0x01,0,32768,'1090519040',getdate(),getdate(),0,80,'D:/108809数据库备份/regie_sc_sj_data.mdf') from sysdatabases
2、检查并修复数据库文件:
--设置regie_sc_sj数据库一次只能一个用户访问
sp_dboption 'regie_sc_sj', 'single user', 'true'
--检查和修复数据库
DBCC CHECKDB('regie_sc_sj')
修复后记录下有报错的表
3、恢复数据库原由属性
sp_dboption 'regie_sc_sj', 'single user', 'false'
sp_configure 'allow updates', 0
reconfigure with override
4、现在数据库中的数据能够查询到,但是没有日志文件,新建日志文件,重启数据库服务。
5、重启数据库服务以后,如果数据库正常,那么就大功告成了,但是如果数据库成为了置疑状态或者日志文件无法新建,那么就只有继续下面的操作了。
6、先按照1到3步的步骤将数据库恢复到可以查询到的状态,不要重启数据库服务,将表、视图、存储过程和函数等用户创建的信息导成脚本。
7、新建一个数据库,在新的数据库(regie_sc_sj_jy)中执行前面导出来的脚本,注意表的脚本中要有索引、用户、主键等信息,在执行表脚本前要将表脚本中的原数据库名(regie_sc_sj)该为新的数据库名(regie_sc_sj_jy)。
8、将数据库中各个表的数据导到新的数据库中。导数据的过程中,前面数据库检查的时候出现过问题的表单独导,这些表已经损坏,无法修复,数据会丢失一部分。
9、到完数据以后,重启数据库服务,将regie_sc_sj和regie_sc_sj_jy都从数据库管理器中分离出去,重新附加regie_sc_sj_jy的数据库文件到管理器中,并将数据库名字修改为regie_sc_sj.
这样数据库regie_sc_sj就修复完成了,但是还是有些数据丢失。
俗话说“善战者,无赫赫功”,数据库的维护应该已预防为主,但是如果真的出现数据库文件损坏的情况,不管多好的解决技巧都不如有个近期的备份进行简单的恢复操作,所以真正要做到数据库的安全,还是要对数据库进行定时备份。
- 数据库文件损坏后的恢复方法
- Oracle数据库文件坏块损坏的恢复方法
- Oracle日志损坏后的恢复方法
- InterBase数据库文件损坏的修复方法
- InterBase数据库文件损坏的修复方法
- ibdata1损坏后的恢复
- 联机日志文件损坏后的恢复方法
- 联机日志文件损坏后的恢复方法
- Raidtools软件 Raid硬盘损坏后的恢复方法
- 联机日志文件损坏后的恢复方法
- Oracle联机日志文件损坏后的恢复方法
- 联机日志文件损坏后的恢复方法
- [HOWTO]SQL Server2000数据库文件损坏的时候如何恢复
- MySQL从数据库文件恢复数据的方法
- mysql损坏后的灾难恢复
- Windows损坏后的Ubuntu引导恢复
- Windows损坏后的Ubuntu引导恢复
- ALM损坏后的恢复步骤
- oracle 字符集问题详解
- 开源软件绿色报时器2.0版发布
- "NOT NULL"约束对索引的影响
- 如何关闭2003的关闭事件跟踪程序
- Server Application Unavailable
- 数据库文件损坏后的恢复方法
- matlab7 启动错误解决
- 后台服务程序开发模式
- oracle数据库字符集
- 基于DirectShow的MPEG-4视频传输系统的研究与实现(摘录)
- C#点击“关闭按钮”消息
- json 学习
- 通过异步程序调用(APC)实现的定时功能
- CSS颜色