数据库数据恢复环境:
某公司存储上部署SQL SERVER数据库,数据库中有1000多个文件,该SQL SERVER数据库每10天生成一个NDF文件,数据库蕴含两个LDF文件。

数据库故障&剖析:
存储设备呈现故障导致SQL SERVER数据库异样,通过检测发现有几个ndf文件大小变为0KB。
尽管存储故障导致NDF文件大小变为0KB,然而数据恢复工程师揣测NDF文件还存在于磁盘中。能够通过编写数据库扫描碎片程序扫描数据库碎片,通过碎片拼接来复原NDF文件,最初修复数据库。

数据库数据恢复过程:
1、将故障存储中所有磁盘以只读形式进行全盘备份,后续的数据分析和数据恢复操作都基于镜像文件进行,防止数据恢复过程中可能对原始数据造成的二次毁坏。
2、由北亚企安数据恢复工程师编写数据库碎片扫描程序扫描数据库碎片。
3、依据NDF文件的页面特色,依照文件号,页号拼接扫描进去的数据库碎片,重组生成出这些0kb的NDF文件。
4、应用北亚企安自主开发的MSSQL文件检测工具对所有数据文件进行检测,后果发现拼接出的4个NDF文件有大量的空数据页,其余文件失常。
5、进一步剖析存储中损坏的lun,发现这些空数据页在存储层面曾经齐全损坏,无奈复原,即这4个NDF文件不能完全恢复。
6、尝试附加数据库,报错 “解决数据库的日志时出错,如果可能请从备份还原。如果没有可用的备份,可能须要从新生成日志”。
7、批改零碎表,从零碎表剔除掉最初增加的LDF文件,计算并批改校验。尝试进行无日志附加数据库,报错:“数据库存在一致性谬误”。
8、批改零碎表中这4个损坏的NDF文件的块数量,使数据库中记录的文件的块数量和拼接进去的NDF的块数量统一,计算并批改校验值。无日志附加数据库,依然报错“数据库存在一致性谬误”。
9、因为空数据页都呈现在这4个NDF文件前面的十几个块中,截断文件对数据完整性影响不大。从新批改零碎表和NDF文件,将数据库中记录NDF块数量的值改至报错的前一页,计算并批改校验。从新进行无日志附加数据库,报错“因为数据库没有齐全敞开,无奈从新生成日志”。
10、批改MDF文件中的数据库的状态值,让数据库认为是齐全敞开的。从新附加数据库,附加胜利。

数据库数据验证:
数据库文件胜利附加后,用户通过数据库中的对象进行初步查问、验证,通过重复验证后确认表中信息正确,数据残缺可用。本次数据恢复工作实现。