[发明专利]对MSSQL数据库进行恢复的方法、系统及存储介质有效
申请号: | 202110828001.5 | 申请日: | 2021-07-22 |
公开(公告)号: | CN113282592B | 公开(公告)日: | 2021-09-24 |
发明(设计)人: | 黄传波;姚一永;龙星澧;涂磊;谢卓伟;钱禹航 | 申请(专利权)人: | 成都云祺科技有限公司 |
主分类号: | G06F16/22 | 分类号: | G06F16/22;G06F16/28 |
代理公司: | 暂无信息 | 代理人: | 暂无信息 |
地址: | 610041 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | mssql 数据库 进行 恢复 方法 系统 存储 介质 | ||
1.一种对MSSQL数据库进行恢复的方法,其特征在于,所述方法包括步骤:
获取存储系统中的数据文件;
根据系统表页标识符和系统表页组织结构解析数据文件中的系统表页,从系统表页中获取用户所需要恢复的表的第一对象信息,其中,第一对象信息包括表名称、表字段和表的主键;
根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息;
判断第二对象信息是否为压缩数据;
如果所述第二对象信息为压缩数据,则根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理,恢复出第一数据,其中,所述行压缩结构包括标题区、列说明符区、短数据区和长数据区;
如果所述第二对象信息不为压缩数据,对所述第二对象信息进行解码处理,恢复出第二数据;
其中,所述根据压缩数据的行压缩结构对所述第二对象信息进行解压处理,再进行解码处理的步骤,包括;
解析所述列说明符区,获取总列数和每列的长度;
根据所述第一对象信息和所述每列的长度解析所述短数据区,获得第一实际数据;
解析所述长数据区中每一列对应的偏移项,获取每一列的结束偏移;
根据结束偏移与所述第一对象信息解析所述长数据区,获得第二实际数据;
解码所述第一实际数据和所述第二实际数据,恢复出第一数据。
2.根据权利要求1所述的对MSSQL数据库进行恢复的方法,其特征在于,在所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤之前,还包括:
判断数据文件是否为损坏文件;
如果所述数据文件为未损坏文件,则所述根据第一对象信息查询到用户表页,从所述用户表页中获得第二对象信息步骤,具体执行如下:
根据第一对象信息索引IAM页,并获得第三对象信息,其中,所述第三对象信息包括页码和文件号,所述IAM页包括含有至少八个数据槽的混合区;
根据所述第三对象信息查询到用户表页,并从所述用户表页中获得第二对象信息。
3.根据权利要求2所述的对MSSQL数据库进行恢复的方法,其特征在于,所述索引IAM页的步骤,包括:
判断所述IAM页混合区内的八个数据槽是否填满;
如果所述八个数据槽未全部填满,则解析所述IAM页混合区,获取所述第三对象信息。
4.根据权利要求1至3任一项所述对MSSQL数据库进行恢复的方法,其特征在于,所述判断第二对象信息是否为压缩数据的步骤之后,还包括:
对所述第一数据进行解析,恢复出第三数据,所述第三数据为LOB数据、SLOB数据、BLOB数据或行溢出数据中任一种或多种。
5.根据权利要求1至3任一项所述对MSSQL数据库进行恢复的方法,其特征在于,所述判断第二对象信息是否为压缩数据的步骤之后,还包括:
记录第一数据中每条数据的首地址偏移;
将所述第一数据中每条数据的首地址偏移与行目录中的地址进行对比,并将未找到的匹配项标记为已删除数据。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于成都云祺科技有限公司,未经成都云祺科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110828001.5/1.html,转载请声明来源钻瓜专利网。