SQL Server 数据库故障状况:
某公司一台存储损坏,SQL Server 数据库解体。管理员重组存储,复原数据库文件,发现有四个 ndf 文件大小变为 0KB。管理员分割咱们数据恢复核心进行数据恢复。
SQL Server 数据库故障剖析:
SQL Server 数据库大小约 80TB,SQL Server 数据库中有 1223 个文件,SQL Server 数据库每 10 天生成一个 NDF 文件,每个 NDF 大概 500GB,数据库总共蕴含两个 LDF 文件。存储损坏,NDF 文件大小变为 0KB,NDF 文件在磁盘上可能存在。能够通过编写数据库扫描碎片程序,扫描数据库碎片、拼接碎片复原 NDF 文件,修复数据库。
SQL Server 数据库数据恢复过程:
1、磁盘扫描数据库碎片。
2、拼接碎片。依据 NDF 文件的页面特色,依照文件号、页号拼接碎片,重组生成出这些 0kb 的 NDF 文件。
3、检测数据库文件。应用北亚自主研发的 MSSQL 文件检测工具对所有数据文件进行检测,发现拼接出的 4 个 NDF 文件有大量的空页,其余文件失常。
4、进一步对损坏的 lun 进行剖析,发现这些数据页在存储层面曾经不存在了,这些数据页无奈复原,即这 4 个文件不能完全恢复。
5、数据恢复工程师尝试附加数据库,呈现报错:“解决数据库的日志时出错,如果可能请从备份还原。如果没有可用的备份,可能须要从新生成日志”。
6、无日志附加数据库。批改零碎表,从零碎表剔除掉最初增加的 LDF 文件,计算并批改校验。进行无日志附加数据库,报错:数据库存在一致性谬误。
7、批改零碎表中这 4 个损坏的 NDF 文件的块数量,使其和复原进去的文件的块数量统一。同时更改这 4 个 NDF 文件首页,使得数据库中记录的文件的块数量和拼接进去的 NDF 的块数量统一,计算并批改校验值。
8、无日志附加数据库,报错数据库存在一致性谬误。
9、一一批改零碎表中这 4 个损坏的 NDF 文件的块数量,使其值等于报错块前一页。剖析报错,因为空页都呈现在这 4 个 NDF 前面十几个块中,截断文件对数据完整性影响不大。从新批改零碎表和 NDF 文件,将数据库中记录 NDF 块数量的值改至报错的前一页,计算并批改校验。
10、从新进行无日志附加数据库,报错:“因为数据库没有齐全敞开,无奈从新生成日志”。
11、批改 MDF 文件中的数据库的状态值,让数据库认为是齐全敞开的。从新附加数据库胜利。
SQL Server 数据库数据恢复后果:
数据库文件胜利附加后,管理员通过数据库中的对象进行初步查问、验证,表中信息根本残缺,数据恢复实现。