首页 > 数据库 >【数据库数据恢复】SQL Server数据库底层File Record被截断为0,无法读取的数据恢复案例

【数据库数据恢复】SQL Server数据库底层File Record被截断为0,无法读取的数据恢复案例

时间:2023-06-20 15:02:28浏览次数:44  
标签:数据恢复 数据库 Server SQL 日志 server 数据

数据库故障&分析:

SQL server数据库数据无法读取。

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

日志中的操作记录:

【数据库数据恢复】SQL Server数据库底层File Record被截断为0,无法读取的数据恢复案例_服务器数据恢复


由于系统表损坏,有大量数据表的结构无法确定,只能依靠数据恢复工程师的技术和经验尝试进行恢复。

经过初检的结果,北亚企安数据恢复工程师团队最终敲定数据恢复方案:

1、备份数据。

2、基于备份文件分析旧SQL server数据库底层数据。

3、从旧SQL server数据库中寻找数据表的结构。

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

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

6、根据日志恢复对应的数据,检查数据是否正确。

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


数据库数据恢复过程:

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

对硬盘做镜像:

【数据库数据恢复】SQL Server数据库底层File Record被截断为0,无法读取的数据恢复案例_服务器数据恢复_02


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、完成上述的所有操作后对数据进行验证,经过验证确认恢复出来的新表与用工具观察到的数据基本一致。本次数据恢复工作完成。

标签:数据恢复,数据库,Server,SQL,日志,server,数据
From: https://blog.51cto.com/sun510/6522765

相关文章

  • 【数据库原理、编程与性能】Integrity, View, Security
    文章目录1.IntegrityConstrains1.1Definition1.2实施机制1.3IntegrityConstraintsinCreateTableStatement1.3.1CreateTable1.3.2ColumnConstraints1.3.3TableConstraints.1.4AlterTableStatement1.5Trigger1.5.1CreateTriggerStatement1.5.2DropTrigger......
  • 【数据库原理、编程与性能】Indexing
    文章目录1.ConceptofIndexing1.1Index1.2CreateIndex1.3DB-Index分类1.4建立索引的原则:1.5DB-Index作用2.聚簇(Cluster/ClusterIndex)存取方法2.1概念2.2特点2.3弊端1.ConceptofIndexing1.1Index索引项=索引键+行指针索引是对数据库表中一列或多列的值进行排......
  • 【数据库原理、编程与性能】Updata Transaction
    文章目录1.TransactionHistories1.1并发(Concurrency)1.2并发操作会出现的DB问题1.3并发控制技术1.4封锁1.4.1锁类型1.4.2事务锁之间的相容矩阵1.5LockingProtocol1.5.1一级封锁协议1.5.2二级封锁协议1.5.3三级封锁协议2.NotationsTransactionHistories2.1Notation......
  • 【数据库原理、编程与性能】Basic SQL Query Language
    文章目录1.HistoryofSQL2.CapabilitiesofSQL2.1综合统一2.2高度非过程化2.3面向集合的操作方式2.4SQL以同一种语法结构提供两种使用方式2.5语言简捷,易学易用3.SQL语句3.1Create语句3.2Select语句3.3Subquery语句3.3.1定义3.3.2Conception(概念)3.3.3predicate(谓词......
  • 【数据库原理、编程与性能】Programming to access a Database
    文章目录1.IntroductiontoEmbeddedSQLinC1.1Declaresection1.2Connect/Disconnect1.2.1Connect1.2.2Disconnect1.3Commit/Rollback1.4Whenever1.5一个实例:1.6HostVariable1.6.1Definition1.6.2说明1.6.3用法1.6.4实例1.6.5IndicatorVar2.CommonEmbedded......
  • Windows Server 2016 OVF, updated Jun 2023 (sysin) - VMware 虚拟机模板
    WindowsServer2016OVF,updatedJun2023(sysin)-VMware虚拟机模板2023年6月版本更新,现在自动运行sysprep,支持ESXiHostClient部署请访问原文链接:https://sysin.org/blog/windows-server-2016-ovf/,查看最新版。原创作品,转载请保留出处。作者主页:sysin.org现在......
  • 终端运行roscore时,报错:Unable to contact my own server at...
    问题现象:问题原因:以上问题是由于ROS环境变量ROS_MASTER_URI设置错误导致的,重新设置该变量即可。解决方法:打开~/.bashrc文件,添加或修改环境变量ROS_HOSTNAME和ROS_MASTER,即改为:exportROS_HOSTNAME=localhostexportROS_MASTER_URI=http://localhost:11311修改并保存~/.......
  • 宝塔面板中使用Mysql命令快速导入大容量数据库
    在宝塔面板中,文件栏目中打开/www/backup/database文件夹,把我们的数据库上传到此文件夹中。(一般导入的数据库都会上传到这个文件夹,方便以后管理)点击旁边的终端,打开宝塔终端界面。输入账号及密码进入终端管理。(如果忘记密码,在软件商店里面找到Linux工具箱1.4里面可以设置......
  • sql server 查看备份记录
    SELECTCONVERT(CHAR(100),SERVERPROPERTY('Servername'))ASServer,msdb.dbo.backupset.database_name,msdb.dbo.backupset.backup_start_date,msdb.dbo.backupset.backup_finish_date,msdb.dbo.backupset.expiration_date,CASEm......
  • CMU15445 (Fall 2020) 数据库系统 Project#4 - Concurrency Control 详解
    前言一个合格的事务处理系统,应该具备四个性质:原子性(atomicity)、一致性(consistency)、隔离性(isolation)和持久性(durability)。隔离性保证了一个活跃的事务(还没提交或者回滚)对数据库所做的系统对于其他的活跃事务是不可见的,看起来就像某一时刻就只有一个事务在操作数据库。然而完美的......