当前位置:网站首页>【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
【数据库数据恢复】SqlServer数据库无法读取的数据恢复案例
2022-08-03 16:41:00 【51CTO】
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、验证所有数据。
经管理员亲自验证,恢复出来的新表与使用专业工具观察到的数据基本一致,本次数据恢复成功。
边栏推荐
- LeetCode·899.有序队列·最小表示法
- 产品-Axure9英文版,轮播图效果
- DAYU200 OpenHarmony标准系统HDMI全屏显示
- 面试不再被吊打!这才是Redis分布式锁的七种方案的正确打开方式
- Kubernetes 笔记 / 入门 / 生产环境 / 用部署工具安装 Kubernetes / 用 kubeadm 启动集群 / 安装 kubeadm
- C专家编程 第3章 分析C语言的声明 3.5 typedef可以成为你的朋友
- 高薪程序员&面试题精讲系列132之微服务之间如何进行通信?服务熔断是怎么回事?你熟悉Hystrix吗?
- 使用Stream多年,collect还有这些“骚操作”?
- Components of communication - the drop-down menu
- “68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
猜你喜欢

数据中台“集存通用治”功能场景说明

使用Stream多年,collect还有这些“骚操作”?

高效的组织信息共享知识库是一种宝贵的资源
![[Unity Getting Started Plan] Basic Concepts (7) - Input Manager & Input Class](/img/a7/950ddc6c9eeaa56fe0c3165d22a7d2.png)
[Unity Getting Started Plan] Basic Concepts (7) - Input Manager & Input Class
![[Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement](/img/e9/9bba4f7ecee81ae7ce7e492b54ee11.png)
[Unity Starter Plan] Making RubyAdventure01 - Player Creation & Movement

protobuf 反射使用总结

How to analyze the weekly activity rate?

设置海思芯片MMZ内存、OS内存详解

最强分布式锁工具:Redisson

deepstresam的插件配置说明,通过配置osd,设置字体的背景为透明
随机推荐
yolov5s用自己的数据集进行训练模型
元宇宙系列--Value creation in the metaverse
中小微企业如何简单便捷、低成本实现数字化?360视觉云有妙招
Kubernetes 笔记 / 生产环境
leetcode:189. 轮转数组
可复现、开放科研、跨学科合作:数据驱动下的科研趋势及应用方案
为何微博又双叒叕崩溃了?
蒋松廷 荣获第六季完美童模全球总决赛 全球总冠军
新版本 MaxCompute 的SQL 中支持的 EXTRACT 函数有什么作用?
C专家编程 第3章 分析C语言的声明 3.8 理解所有分析过程的代码段
uniapp隐藏导航栏和横屏显示设置
Auto Scaling 弹性伸缩(运维释放人力)
Windows 事件查看器记录到 MYSQL
Big guys.Use flink-cdc-sqlserver version 2.2.0 to read sqlserver2008R
“68道 Redis+168道 MySQL”精品面试题(带解析),你背废了吗?
How to write SQL statements in DataWorks monitoring data reaches a certain value to indicate the change of
使用deepstream消息发送功能的时候,检测框没有检测标签,No text labels of bboxes displayed with osd for deepstream-test5
Async的线程池使用的哪个?
Interviews are no longer hanged!This is the correct way to open the seven schemes of Redis distributed locks
Hannah荣获第六季完美童模全球总决赛全球人气总冠军