sql server数据库错误数据恢复-数据库数据恢复

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了sql server数据库错误数据恢复-数据库数据恢复相关的知识,希望对你有一定的参考价值。

1.服务器硬件设备清单
技术分享图片

2.故障描述

需要进行数据恢复的服务器是一台r520型号存储,共有7块SAS硬盘分别组成raid1和raid5两组磁盘阵列。主要sql server数据库存放在C盘中,在使用过程中,客户发现C盘容量即将占满,于是将数据库路径指向了D盘,在D盘生成了一个.ndf文件。
客户在继续使用了大约10天之后,数据库出现故障,连接失效,无法正常附加查询。

3.备份数据

考虑到数据的安全性以及可还原性,在做数据恢复之前需要对所有源数据做备份,以防万一其他原因导致数据无法再次恢复。使用dd命令或winhex工具将所有磁盘都镜像成文件。

4.故障分析

a)分析故障原因
由于数据库文件所在磁盘容量不足,导致数据库无法继续正常运行,出现逻辑错误
(b)分析RAID组结构
客户服务器上共7块300G硬盘,其中2块硬盘做RAID 1,用于安装操作系统,其余5块硬盘做RAID 5存放数据。
分析RAID 1和RAID 5的相关结构,重组虚拟出RAID 1和RAID 5,查看其中数据。
(c)分析原始数据库文件
由于客户在数据库发生故障之后,进行过多次数据库恢复尝试,并且每一次尝试都是在源环境下进行的,导致原始数据库文件被更改覆盖,并且磁盘空间被多次复写,无法使用尝试恢复之后的数据库文件进行修复。
询问客户得知,客户在数据库发生故障的时候,备份过一分原始的故障数据库文件。

5.数据库修复

从虚拟出的RAID 5空间中将客户之前备份的数据库文件拷贝出来,尝试在数据库中附加,附加失败,错误提示如下:
图一:
技术分享图片

错误提示主数据库文件和次级数据库文件不匹配,查看.ndf文件底层,发现.ndf文件中几乎没有数据,尝试取消.mdf文件和.ndf文件之间关联,只用.mdf文件进行附加。
尝试后发现,只用.mdf文件附加时也发生错误,但是错误提示改变
图二:
技术分享图片
此时错误提示日志文件(.ldf)和数据库文件(.mdf)不匹配。
之后对数据库尝试进行无数据库附加,附加成功。但是发现数据库系统表损坏,无法正常使用。
图三:
技术分享图片

对数据库的系统表尝试修复,但由于系统表损坏过于严重,无法修复。
数据库记录提取
解析数据库文件中的数据库记录
编写相应的程序提取数据库文件中的数据库记录
根据客户以前的数据库备份获取数据库中的表结构
重构表结构并肩提取出的数据库记录导入到新的表中

6.数据验证

由客户对提取出的数据库记录进行验证,所有数据完全恢复,本次数据恢复成功。

7.数据恢复结论

在数据库使用过程中,要合理分配数据库文件所在磁盘空间,及时清理垃圾数据,保证数据库的正常、安全运行。

以上是关于sql server数据库错误数据恢复-数据库数据恢复的主要内容,如果未能解决你的问题,请参考以下文章

sql server 2012无法还原数据库,具体错误如下

SQL server 2008中使用SSIS从一个数据库导入数据到另一个数据库,[SQL Server 目标 [22]] 错误: 无法准备 S

sql server无法修改数据

sql server2012加载以前的原有数据库的时候出现了附加错误,怎么办

我使用SQL server 2008附加2005的数据库,但是出现错误!

SQL server 2005 可以数据库修复