数据库数据恢复—SqlServer数据库表结构损坏的数据恢复案例

yumo6664个月前 (03-27)技术文章31

SQL Server数据库故障&分析&恢复方案:

SQL Server数据库的数据无法被读取。

经过数据库数据恢复工程师的初步检测,发现SQL Server数据库文件无法被读取的原因是底层File Record被截断为0,无法找到文件开头,而且数据表结构也已经损坏。镜像文件的前几十M和中间一部分空间被覆盖,系统表损坏,所以无法读取。

日志中的操作记录:



由于系统表损坏,大量数据表的结构无法确定,只能靠仅有线索和数据恢复工程师的技术&经验来恢复数据库数据。

经过北亚企安数据恢复工程师团队的会诊,最终敲定针对该数据库的数据恢复方案:

1、备份数据。对丢失数据的硬盘做全盘镜像备份,以确保数据的安全性。

2、分析备份文件中原数据库,从原数据库中寻找数据表的结构。

3、从日志中提取一部分数据表的结构。

4、从日志中和残留数据中提取完好的数据。

5、根据日志恢复对应的数据,并检查数据的正确性。

6、核对数据没问题后恢复所有数据。

SQL Server数据库数据恢复过程:

1、将故障数据库所涉及到的硬盘标记后从服务器上取下,移交给硬件工程师检测是否存在物理故障。经过检测没有发现有磁盘存在物理故障。将每块硬盘以只读方式做扇区级全盘镜像。镜像完成后将所有硬盘按照原样还原到原服务器中。

备份硬盘数据:



2、打开镜像文件,分析硬盘底层数据,发现硬盘底层残留着许多SQL Server数据库的日志和备份文件。经过查看和分析,发现日志中有很多包括插入语句的数据库操作记录;备份文件中有建表语句和一部分旧数据。

北亚企安数据恢复工程师编写了一个提取数据库相关数据的小程序,扫描所有存在的数据库残留并提取所有数据。

3、分析扫描到的所有日志文件,发现日志文件中的数据记录有着固定的开头和结尾,其中每条数据都在固定的位置上有自己的OBJECT_ID号,在接下来的扫描文件中,继续搜寻有同样OBJECT_ID的数据记录,发现结构相同,就可以确定这是完好的数据,并进行提取。

分析扫描到的备份文件,发现很多建表语句,根据这些语句可以获取到一部分表结构。针对剩余的表结构,由于截断为0的部分刚好在系统表,没有办法提取表结构,只能通过从日志中提取的数据来推理表结构和数据类型。

4、根据前面的分析,北亚企安数据恢复工程师编写程序从备份文件中提取建表语句,根据建表语句分析出表结构与各种数据类型。

5、在残留的系统表中寻找22H、07H、05H表,根据这些建立表与OBJECT_ID的对应关系。北亚企安数据恢复工程师编写程序提取日志中的记录,根据OBJECT_ID将数据和表进行对应,并插入到新表中。

6、经过验证,用户方确认恢复出来的数据完整有效,认可数据恢复结果。

相关文章

一种 SQL Server 数据库恢复方案:解密、恢复并导出 MDF/NDF/BAK文件

天津鸿萌科贸发展有限公司从事数据安全服务二十余年,致力于为各领域客户提供专业的数据恢复、数据备份、数据取证、数据迁移解决方案,并针对企业面临的数据安全风险,提供专业的相关数据安全培训。天津鸿萌科贸发展...

如果数据库误操作, 如何执行数据恢复?

如果数据库出现误操作,导致数据被删除或修改,可以通过以下步骤进行数据恢复:停止MySQL服务:在误操作发生后,立即停止MySQL服务,防止数据被覆盖。找到备份数据:如果有备份,可以通过备份文件进行数据...

删库之后不要着急跑路,教你神不知鬼不觉找回数据

在工作中,我们误删数据或者数据库,我们一定需要跑路吗?我看未必,程序员一定要学会自救,神不知鬼不觉的将数据找回。在 mysql 数据库中,我们知道 binlog 日志记录了我们对数据库的所有操作,所以...

服务器数据恢复—Sql Server数据库数据恢复案例

服务器数据恢复环境:一台安装windows server操作系统的服务器。一组由8块硬盘组建的RAID5,划分LUN供这台服务器使用。在windows服务器内装有SqlServer数据库。存储空间LU...

服务器数据恢复—云服务器上mysql数据库表被truncate的数据恢复

云服务器特点:1、无需硬件设备,只需按照配置支付相应的费用,云服务器服务商不仅提供云服务器环境,同时还提供技术咨询服务。2、云服务器可以更充分的利用资源,无需考虑老旧设备的淘汰和折旧,节约购买新设备的...

「数据库数据恢复」SQL Server数据库数据恢复案例

SQL Server数据库故障情况:某公司一台存储损坏,SQL Server数据库崩溃。管理员重组存储,恢复数据库文件,发现有四个ndf文件大小变为0KB。SQL Server数据库故障分析:SQL...