-4006-505-646

sql server数据库错误数据恢复成功案例

故障描述
本案例中涉及一台装有SqlServer数据库的某品牌r520型号的服务器存储,这台存储中又包含有两组磁盘阵列,raid级别都是raid5。正常情况下用户的SqlServer数据库存放在D盘中,后因为数据量大导致D盘容量不足,管理员便在E盘中生成了一个.ndf的文件并且将数据库路径指向E盘继续进行使用。但是大约半个月后数据库突然出现故障报错,连接失效,SqlServer数据库无法附加查询。管理员于是进行尝试性数据恢复操作(管理员在原环境下进行了多次尝试性恢复,导致了原始数据库文件被重复的更改、覆盖,磁盘空间复写)为后来的数据恢复工作增大了难度。

备份数据
按照数据恢复行业惯例,所有数据在进行数据恢复操作前必须对数据进行完整镜像,使用dd命令或数据恢复工具将所有磁盘都镜像成文件后对数据库进行检测和分析。

故障分析
数据库报错的原因经工程师初步推断可能是由于D盘的存储空间不足导致的逻辑错误。
工程师对存储上的两组raid5磁盘阵列进行分析重组,查看其中的数据并将raid总的数据库文件备份出来进行尝试性附加数据库,但数据库报错。报错内容为“主数据库文件和次级数据库文件不匹配”

数据恢复
数据恢复工程师查看.ndf文件底层,但是在该文件中发现的数据量微乎其微,几乎没有任何数据,工程师将.mdf文件和.ndf文件之间的关联关系取消,单独使用.mdf文件进行附加数据库依然有报错,报错内容为“日志文件(.ldf)和数据库文件(.mdf)不匹配”。工程师继续进行了数据库的五数据库附加操作,数据库可以附加但系统表有损坏,数据库依然无法正常使用。
工程师尝试修复数据库系统表但是没有成功,数据表损坏严重,修复难度极大且效果难以保障,数据恢复工程师决定放弃修复数据表转而尝试其他方法。
数据恢复工程师将数据恢复的突破口放在数据库记录上,通过自己编写的一个小程序将数据库记录提取出来,再根据客户以的数据库备份数据获取到该数据库的表结构。重构数据库表结构,然后将数据库记录导入新表。

数据恢复成功

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

4006-505-646