【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例

SqlServer数据库故障&分析:
SQL server数据库的数据无法被读取。管理员联系我们数据恢复中心进行数据库数据恢复。
数据库数据恢复工程师对故障数据库进行分析,发现SQL Server数据库文件无法被读取的原因是由于底层File Record被截断为0,无法找到文件开头,数据表结构也被损坏。镜像文件前面80M左右的空间和中间一部分空间被覆盖掉,系统表损坏,无法读取,考虑用自动备份文件来提取表结构。


日志中的操作记录:
 

 
由于系统表被损坏,有大量数据表的结构无法被确定,只能靠数据库数据恢复工程师根据经验进行恢复工作。

 

数据库数据恢复方案:


经过北亚数据库数据恢复工程师团队的会诊,确定以下数据库数据恢复方案:
备份用户数据——分析备份文件中旧数据的数据库——从旧数据库中寻找数据表的结构——从日志中提取一部分数据表的结构——从日志中和残留数据中提取完好的数据——根据日志恢复对应的数据,并检查数据是否正确——核对数据没问题后恢复所有数据。

SqlServer数据库数据恢复过程:


1、备份数据。


硬件工程师首先检测硬盘是否存在物理故障。没有发现硬件问题后对每块硬盘做镜像备份。
使用专业工具备份所有硬盘数据:

 

2、扫描镜像文件。


用工具打开残留文件并分析硬盘底层数据,发现硬盘底层中还残留着许多SQL Server的日志和备份文件。残留日志中有很多数据库插入语句的操作记录。残留备份文件中发现建表语句和部分旧数据,尝试提取这些数据。


为了加快数据提取速度,北亚数据恢复工程师编写了一个提取数据库相关数据的小程序,扫描整个硬盘中所有的数据库残留数据,提取所有数据。

3、分析扫描数据。


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


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

4、提取数据。


根据之前分析,北亚数据恢复工程师编写程序从备份文件中提取建表语句,根据建表语句分析出表结构与各种数据类型,同时在残留的系统表中寻找22H、07H、05H表。根据这些建立表与OBJECT_ID的对应关系编写新的程序对日志中的记录进行提取,根据object ID来对应数据和表,并插入到新表中。

5、验证所有数据。
经管理员亲自验证,恢复出来的新表与使用专业工具观察到的数据基本一致,本次数据恢复成功。
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值