一次SQLServer数据库修复经历
2016-08-05 14:23
176 查看
数据库损坏情况
数据库有多个数据文件及日志文件,其中一个数据文件损坏丢失,后通过文件恢复工具恢复出来,但是有错误,导致数据库无法启动。
修复步骤
1.首先尝试“附加数据库”
根据网上的资料,如果数据库损坏不严重的话,可以直接通过“附加数据库”的方式恢复,但是很不幸,尝试失败
不过通过“附加数据库”得到了一条很重要的信息,就是当选中主数据文件MDF后,会将该数据所需的所有文件依次列出来
并且列出的文件顺序是按照文件ID号排序的,也就是文件的创建顺序显示的
这就为下一步的操作提供了必要的条件
2. 新创建一个同名的数据库,创建数据库时,按照步骤1中列数的文件名,依次添加数据库文件,添加顺序要严格按照步骤1中列出的文件名顺序
文件的逻辑名称和物理名称都要与原数据库保持一致
3. 停止数据库服务,将源数据文件拷贝到新创建的数据库数据文件目录进行覆盖
4. 重启数据库
幸运的话,启动过后会看到数据库状态为:“可疑”
5. 从“可疑”状态恢复到可用状态
依次执行以下命令,恢复数据库
6. 查看修复后的数据库数据
根据数据库受损程度不同,恢复比也不同,我的实验恢复出了大概50%的数据。
数据库有多个数据文件及日志文件,其中一个数据文件损坏丢失,后通过文件恢复工具恢复出来,但是有错误,导致数据库无法启动。
修复步骤
1.首先尝试“附加数据库”
根据网上的资料,如果数据库损坏不严重的话,可以直接通过“附加数据库”的方式恢复,但是很不幸,尝试失败
不过通过“附加数据库”得到了一条很重要的信息,就是当选中主数据文件MDF后,会将该数据所需的所有文件依次列出来
并且列出的文件顺序是按照文件ID号排序的,也就是文件的创建顺序显示的
这就为下一步的操作提供了必要的条件
2. 新创建一个同名的数据库,创建数据库时,按照步骤1中列数的文件名,依次添加数据库文件,添加顺序要严格按照步骤1中列出的文件名顺序
文件的逻辑名称和物理名称都要与原数据库保持一致
3. 停止数据库服务,将源数据文件拷贝到新创建的数据库数据文件目录进行覆盖
4. 重启数据库
幸运的话,启动过后会看到数据库状态为:“可疑”
5. 从“可疑”状态恢复到可用状态
依次执行以下命令,恢复数据库
use master -- 设置为单用户状态 ALTER DATABASE NetcaseDB SET SINGLE_USER; GO -- 设置为紧急模式 ALTER DATABASE NetcaseDB SET EMERGENCY; GO -- 通过自带的"CHECKDB"命令修复数据库,允许丢数据 DBCC CHECKDB (NetcaseDB , REPAIR_ALLOW_DATA_LOSS) WITH NO_INFOMSGS; GO -- 恢复成多用户状态 ALTER DATABASE NetcaseDB SET MULTI_USER; GO
6. 查看修复后的数据库数据
根据数据库受损程度不同,恢复比也不同,我的实验恢复出了大概50%的数据。
相关文章推荐
- 一次愉快的 bug 修复经历
- 一次修复MySQL数据库的经历
- 一次修复MySQL数据库的经历
- 一次Mysql数据库的修复经历
- 记一次成功修复U盘的痛苦经历
- 记一次修复Mac和Win7双系统启动菜单的经历
- 一次修复IncrediBuild Coordinator服务的经历
- 一次修复IncrediBuild Coordinator服务的经历
- 不断优化配置,逐步提高性能——我的一次性能测试经历
- 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历
- 手机支付:一次痛苦的经历 推荐
- 一次处理Com组件8007007e错误的经历
- 下午经历的一次exchange数据库无法挂载
- mysql打开文件数用光的一次经历
- Java Web架构知识整理——记一次阿里面试经历
- 一次bug死磕经历之Hbase堆内存小导致regionserver频繁挂掉
- LaTeX中设置目录显示深度的一次乌龙经历
- 一次随机crash的debug经历
- 一次百度面试经历
- 一次见鬼搞笑的高校应聘经历