关于数据恢复:数据库数据恢复ndf文件损坏的SQL-SERVER数据库数据恢复案例

37次阅读

共计 983 个字符,预计需要花费 3 分钟才能阅读完成。

数据库数据恢复环境:
某公司存储上部署 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 文件中的数据库的状态值,让数据库认为是齐全敞开的。从新附加数据库,附加胜利。

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

正文完
 0