对MSSQL数据库进行恢复的方法、系统及存储介质技术方案

技术编号:29757422 阅读:16 留言:0更新日期:2021-08-20 21:10
本发明专利技术涉及一种对MSSQL数据库进行恢复的方法、系统及存储介质,属于数据恢复领域。所述方法包括:获取数据文件;解析系统表页,获取第一对象信息;查询到用户表页,获得第二对象信息;判断第二对象信息是否为压缩数据;若第二对象信息为压缩数据,则根据压缩数据的行压缩结构对所述第二对象信息进行解压和解码,恢复出第一数据。所述系统包括:文件获取模块、系统表解析模块、用户表查询模块、第二判断模块和解压解码模块。本发明专利技术基于二进制解析,能够帮助用户从MSSQL中恢复表级程度的数据,并支持对已压缩数据的恢复,恢复数据范围大,不依赖日志文件,操作更加灵活、方便。

【技术实现步骤摘要】
对MSSQL数据库进行恢复的方法、系统及存储介质
本专利技术属于数据恢复领域,涉及一种对MSSQL数据库进行恢复的方法、系统及存储介质。
技术介绍
SQLSever是Microsoft公司推出的关系型数据库管理系统,全称为MicrosoftSQLSever,简称MSSQL。SQLSever是一种闭源数据库产品,SQLSever为广大的用户提供程序,不提供源代码,使得SQLSever具有安全性高、可用性强和运行性能佳的特点。SQLSever的数据文件分为MDF文件(PrimaryDataFile)、NDF文件(SecondaryDataFiles)以及LDF文件(LogDataFiles),其中MDF文件和LDF文件为每个数据库都有,NDF文件只有在数据库发生拆分时才会出现。MDF和NDF文件主要用于储存数据,两者具有相似的结构,而LDF文件为数据库日志,储存了数据库的所有事务操作,主要用于记录以及回滚事务。目前,由于SQLSever的闭源特性,传统的SQLSever数据恢复技术仅能够达到文件级恢复程度,而能够达到表级恢复程度的技术几乎没有。同时,由于SQLSever2008中引入了行压缩操作,数据在执行了行压缩之后,对应表的数据结构会重新进行组织,导致传统的SQLSever数据恢复技术无法解析压缩数据。因此,如何帮助用户从SQLSever中恢复表级程度的数据,以及帮助用户恢复经过行压缩后的数据,成为当前急需解决的技术问题。
技术实现思路
为了解决上述
技术介绍
中的技术问题,本专利技术实施例提供了一种对MSSQL数据库进行恢复的方法、系统及存储介质。所述技术方案如下:第一个方面,提供了一种对MSSQL数据库进行恢复的方法,所述方法包括步骤:获取存储系统中的数据文件;根据系统表页标识符和系统表页组织结构解析数据文件中的系统表页,从系统表页中获取用户所需要恢复的表的第一对象信息,其中,第一对象信息包括表名称、表字段和表的主键;根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息;判断第二对象信息是否为压缩数据;如果所述第二对象信息为压缩数据,则根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理,恢复出第一数据,其中,所述行压缩结构包括标题区、列说明符区、短数据区和长数据区;如果所述第二对象信息不为压缩数据,对所述第二对象信息进行解码处理,恢复出第二数据。可以理解的是,第二对象信息是指,数据库用户表中的单条数据储存在MDF文件中的格式。第二对象由用户储存的实际数据以及用于描述实际数据储存结构元数据组成。通过表字段信息,结合第二对象信息,既可以解析出单条数据中每一个字段对应数据内容。还可以理解的是,上述第一数据和上述第二数据均是指待恢复的用户表的数据,两者的区别在于来源方式并不相同。在其中一个实施例中,所述根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理的步骤,包括:解析所述列说明符区,获取总列数和每列的长度;根据所述第一对象信息和所述每列的长度解析所述短数据区,获得第一实际数据;解析所述长数据区中每一列对应的偏移项,获取每一列的结束偏移;根据结束偏移与所述第一对象信息解析所述长数据区,获得第二实际数据;解码所述第一实际数据和所述第二实际数据,恢复出第一数据。在其中一个实施例中,在所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤之前,还包括:判断数据文件是否为损坏文件;如果所述数据文件为未损坏文件,则所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤,具体执行如下:根据第一对象信息索引IAM页,并获得第三对象信息,其中,所述第三对象信息包括页码和文件号,所述IAM页包括含有至少八个数据槽的混合区;根据所述第三对象信息查询到用户表页,并从所述用户表页中获得第二对象信息。在其中一个实施例中,所述索引IAM页的步骤,包括:判断所述IAM页混合区内的八个数据槽是否填满;如果所述八个数据槽未全部填满,则解析所述IAM页混合区,获取所述第三对象信息。在其中一个实施例中,所述判断第二对象信息是否为压缩数据的步骤之后,还包括:对第一数据进行解析,恢复出第三数据,所述第三数据为LOB数据、SLOB数据、BLOB数据或行溢出数据中任一种或多种。在其中一个实施例中,所述判断第二对象信息是否为压缩数据的步骤之后,还包括:记录第一数据中每条数据的首地址偏移;将所述第一数据中每条数据的首地址偏移与行目录中的地址进行对比,并将未找到的匹配项标记为已删除数据。第二个方面,还提供了一种对MSSQL数据库进行恢复的系统,所述系统包括:文件获取模块,用于获取存储系统中的数据文件;系统表解析模块,用于根据系统表页标识符和系统表页组织结构解析数据文件中的系统表页,从系统表页中获取用户所需要恢复的表的第一对象信息,其中,第一对象信息包括表名称、表字段和表的主键;用户表查询模块,用于根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息;第二判断模块,用于判断第二对象信息是否为压缩数据;解压解码模块,用于根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理,恢复出第一数据,其中,所述行压缩结构包括标题区、列说明符区、短数据区和长数据区;解码模块,用于对所述第二对象信息进行解码处理,恢复出第二数据。在其中一个实施例中,所述系统,还包括:第一判断模块,用于判断数据文件是否为损坏文件;其中,所述用户表查询模块,包括:索引单元,用于根据第一对象信息索引IAM页,并获得第三对象信息,其中,所述第三对象信息包括页码和文件号,所述IAM页包括含有至少八个数据槽的混合区;查询单元,根据所述第三对象信息查询到用户表页,并从所述用户表页中获得第二对象信息。在其中一个实施例中,所述系统还包括:数据格式解析模块,用于对所述第一数据进行解析,恢复出第三数据,所述第三数据为LOB数据、SLOB数据、BLOB数据或行溢出数据中任一种或多种。在其中一个实施例中,所述系统还包括:记录模块,用于记录第一数据中每条数据的首地址偏移;对比标记模块,用于将所述第一数据中每条数据的首地址偏移与行目录中的地址进行对比,并将未找到的匹配项标记为已删除数据。第三个方面,还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述对MSSQL数据库进行恢复的方法。本专利技术的有益效果:1.本专利技术运用二进制解析与编码技术对MDF文件或NDF文件进行解析,能够获取MSSQL数据库内的用户表页,并从用户表页中恢复出数据,达到了恢复指定用户表页数据的效果;2.基于二进制解析,本专利技术对MSSQL数本文档来自技高网...

【技术保护点】
1.一种对MSSQL数据库进行恢复的方法,其特征在于,所述方法包括步骤:/n获取存储系统中的数据文件;/n根据系统表页标识符和系统表页组织结构解析数据文件中的系统表页,从系统表页中获取用户所需要恢复的表的第一对象信息,其中,第一对象信息包括表名称、表字段和表的主键;/n根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息;/n判断第二对象信息是否为压缩数据;/n如果所述第二对象信息为压缩数据,则根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理,恢复出第一数据,其中,所述行压缩结构包括标题区、列说明符区、短数据区和长数据区;/n如果所述第二对象信息不为压缩数据,对所述第二对象信息进行解码处理,恢复出第二数据。/n

【技术特征摘要】
1.一种对MSSQL数据库进行恢复的方法,其特征在于,所述方法包括步骤:
获取存储系统中的数据文件;
根据系统表页标识符和系统表页组织结构解析数据文件中的系统表页,从系统表页中获取用户所需要恢复的表的第一对象信息,其中,第一对象信息包括表名称、表字段和表的主键;
根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息;
判断第二对象信息是否为压缩数据;
如果所述第二对象信息为压缩数据,则根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理,恢复出第一数据,其中,所述行压缩结构包括标题区、列说明符区、短数据区和长数据区;
如果所述第二对象信息不为压缩数据,对所述第二对象信息进行解码处理,恢复出第二数据。


2.根据权利要求1所述的对MSSQL数据库进行恢复的方法,其特征在于,所述根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理的步骤,包括;
解析所述列说明符区,获取总列数和每列的长度;
根据所述第一对象信息和所述每列的长度解析所述短数据区,获得第一实际数据;
解析所述长数据区中每一列对应的偏移项,获取每一列的结束偏移;
根据结束偏移与所述第一对象信息解析所述长数据区,获得第二实际数据;
解码所述第一实际数据和所述第二实际数据,恢复出第一数据。


3.根据权利要求2所述的对MSSQL数据库进行恢复的方法,其特征在于,在所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤之前,还包括:
判断数据文件是否为损坏文件;
如果所述数据文件为未损坏文件,则所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤,具体执行如下:
根据第一对象信息索引IAM页,并获得第三对象信息,其中,所述第三对象信息包括页码和文件号,所述IAM页包括含有至少八个数据槽的混合区;
根据所述第三对象信息查询到用户表页,并从所述用户表页中获得第二对象信息。


4.根据权利要求3所述的对MSSQL数据库进行恢复的方法,其特征在于,所述索引IAM页的步骤,包括:
判断所述IAM页混合区内的八个数据槽是否填满;
如果所述八个数据槽未全部填满,则解析所述IAM页混合区,获取所述第三对象信息。


5.根据权利要求1至4任一项所述对MSSQL数据库进行恢复的方法,其特征在于,所述判断第二对象信息是否为压缩数据的步骤之后,还包括:
对所述第一数据进行...

【专利技术属性】
技术研发人员:黄传波姚一永龙星澧涂磊谢卓伟钱禹航
申请(专利权)人:成都云祺科技有限公司
类型:发明
国别省市:四川;51

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1