当前位置: 首页 > news >正文

【数据库数据恢复】SQL Server数据表结构损坏的数据恢复案例

数据库故障&分析:
SQL server数据库数据无法读取。
经过初检,发现SQL server数据库文件无法被读取的原因是因为底层File Record被截断为0,无法找到文件开头,数据表结构损坏。镜像文件的前面几十M空间和中间一部分空间被覆盖掉,系统表损坏,无法读取。考虑用自动备份文件来提取表结构。
日志中的操作记录:


 

由于系统表损坏,有大量数据表的结构无法确定,只能依靠数据恢复工程师的技术和经验尝试进行恢复。
经过初检的结果,北亚企安数据恢复工程师团队最终敲定数据恢复方案:
1、备份数据。
2、基于备份文件分析旧SQL server数据库底层数据。
3、从旧SQL server数据库中寻找数据表的结构。
4、从日志中提取一部分数据表的结构。
5、从日志和残留数据中提取完好的数据。
6、根据日志恢复对应的数据,检查数据是否正确。
7、数据核对没有问题后恢复出所有数据。

数据库数据恢复过程:
1、将涉及到的所有硬盘交由硬件工程师进行物理故障检测,经过检测没有发现有硬盘存在物理故障。将每块硬盘以只读方式做全盘镜像,后续的数据分析和数据恢复工作都基于镜像文件进行,避免对原始磁盘数据造成二次破坏。
对硬盘做镜像:


 

2、基于镜像文件分析硬盘底层数据,发现底层残留许多以前SQL server数据库的日志和备份文件。经过查看分析,发现日志中有很多包括插入语句的操作记录。在备份文件中发现建表语句和一部分旧数据。
3、北亚企安数据恢复工程师编写提取SQL server数据库相关数据的小程序,扫描硬盘中所有存在的SQL server数据库残留数据并进行提取。
4、分析扫描到的所有日志文件,发现日志文件中的数据记录都有固定的开头和结尾,每条数据在固定的位置都有object ID号。在接下来的扫描中,继续寻找有同样object Id的数据记录,发现这些数据记录结构相同,由此可以判断这是完好的数据,可以提取。
5、分析扫描到的备份文件,发现可以通过提取其中的建表语句来得到一部分的表结构。对于剩余的表结构,因为截断为0的部分刚好在系统表,所以没有办法提取,只能根据从日志中提取出来的数据猜测表结构和数据类型。
6、根据前面分析的结果,北亚企安数据恢复工程师编写程序从备份文件中提取建表语句,根据建表语句分析表结构与各种数据的类型。在残留的系统表中寻找22H、07H、05H表,根据这些建立表与OBJECT_ID的对应关系。
7、北亚企安数据恢复工程师编写程序提取日志中的记录,根据object ID来对应数据和表,并将数据插入到新表中。
8、完成上述的所有操作后对数据进行验证,经过验证确认恢复出来的新表与用工具观察到的数据基本一致。本次数据恢复工作完成。
 

http://www.lryc.cn/news/93879.html

相关文章:

  • C语言/C++ 之 打飞机游戏
  • 在 Docker 中部署 Mino 并挂载配置文件
  • 无限脉动:释放音乐和区块链在音乐领域的力量
  • 读发布!设计与部署稳定的分布式系统(第2版)笔记09_一窝蜂和容量
  • 详解java定时任务
  • PCIe卡设计方案:单路12Gsps 3G 带宽模拟信号源PCIe卡
  • 第1章 计算机网络和因特网
  • QT入门基础知识
  • Leetcode---350周赛
  • Django通过Nginx和uWSGI实现负载均衡
  • 单元测试框架——Junit5
  • centos 系列添加 yum 源
  • [Hive高级特性与 DDL和DML语法]
  • Web服务器群集:Web基础与HTTP协议
  • cmd命令常用速记
  • Python网络爬虫基础进阶到实战教程
  • 树莓派使用VNC、SSH、Xrdp等方式进行远程控制的方法和注意事项
  • C++ 第二弹封装-类和对象
  • 浅析 GeoServer CVE-2023-25157 SQL注入
  • 1001router6-react
  • 前端Vue自定义支付密码输入键盘Keyboard和支付设置输入框Input
  • VB+ACCESS超市管理系统设计(源代码+系统)
  • 【机器学习】十大算法之一 “神经网络”
  • 【MarkDown】CSDN Markdown之流程图graphflowchart详解
  • Git下:Git命令使用-详细解读
  • 一条SQL语句的前世今生
  • 各种架构比较
  • scapy定制数据包探测主机
  • 【Java】Java核心要点总结70
  • 如何把一个 Git 仓库的分支加入另一个无关的 Git 仓库