分类筛选
分类筛选:

关于MSSQLSERVER论文范文资料 与MSSQLSERVER数据库恢复方法实例有关论文参考文献

版权:原创标记原创 主题:MSSQLSERVER范文 科目:发表论文 2024-02-20

《MSSQLSERVER数据库恢复方法实例》:本论文为您写MSSQLSERVER毕业论文范文和职称论文提供相关论文参考文献,可免费下载。

摘 要:MS SQL SERVER的数据库恢复的案件实例和恢复还原的方法和原理.笔者在2011年曾经协助我院自侦部门*过一件贪污案件,在案件中涉及恢复一个MS SQL SERVER的数据库.在经过常规的数据恢复方法无法正常恢复的情况下,经专家指点使用数据库逆向还原的方法恢复了数据.

关键词:MS SQL SERVER 数据库;恢复;还原

一、恢复数据的过程

笔者拿到证据硬盘后首先对硬盘做了镜像拷贝,保证证据硬盘没有收到污染和破坏.其次,使用常用数据恢复软件对镜像硬盘进行扫描,试图恢复数据库的MDF文件或者备份文件.但是扫描结果是多个备份文件已经被删除,并在硬盘上找不到任何删除的数据库的文件名和存储位置信息.显然常规方法行不通,笔者经过多方查找资料和联系专家,经专家指点找到一种恢复数据库的方法即利用数据库MDF文件的数据硬盘页式存储结构信息,逆向还原MDF 文件.实际做法如下:

1、首先定义数据页特征:MDF文件的数据页大小为8K,应该符合以下几个条件:第0字节为1, 0x40字节至0x60字节全为0.当数据库只有一个mdf文件時,属于该mdf文件的页0x24字节为1, 0x25字节为0, 页号记录在0x20 处,从0开始.

2、建立一个日志文件1.log,对镜像硬盘进行遍历. 然后读取每一个扇区,检查是否符合数据页要求.如符合,输出0x20处,长度为4的页id, 同时输出当前扇区号到1.log文件.到这样就能够得到一个记录了格式符合SQL数据页的位置和页号的日志.

3、对1.log中,上下两行页号的差等于扇区的差除以16(数据页大小为16个扇区)的话, 可以认为这两个数据页连续.这样,当遇到数据页不连续时,可以将上一页作为一个文件碎片的结束,而不连续的那个页作为下一个文件碎片的开始.记录下每一个碎片的开始扇区, 结束扇区,开始数据页号,结束数据页号, 以及包含页数量.将这些信息记录在2.log文件中.

4、第0号页中包含了数据库文件的总页数, 其位置在0xAF到0xB2中.根据这个长度创建一个空文件1.mdf.

5、如果镜像硬盘中只包含一个数据库,2.log中的数据可以直接使用,将记录的对应扇区中的数据页拷贝到1.mdf中.如果包含多个数据库,可以手工调整,例如只保留其中物理位置比较接近,较完整,且能够逆向还原整个数据库.

二、逆向还原数据库的原理

(一)数据库文件数据页结构分析

SQL Server的MDF文件是页式存储格式.文件被划分成若干数据页.数据页是包含所有非文本或图像的数据的结构.就像使用SQL Server中的其他类型的页面一样,数据页面具有8KB(或8192字节)的固定大小.它们由三个主要部分组成:页面标题、数据行和行偏移量数组,在每个数据页中,页面标题占用了前96个字节(剩下的8096字节用于数据和行偏移量)数据页的页号pageID是从0开始, 顺序排列.

(二)文件RAW恢复方法

通过对整个磁盘按扇区逐一扫描,找出文件头和文件脚信息的这种恢复技术叫做RAW文件恢复.RAW文件恢复方式可恢复一些特定类型的文件,也经常用于恢复SQL Server 数据库 .MDF文件.

RAW文件恢复程序按以下工作步骤;

在硬盘上按扇区同步搜索一种或多种文件类型的文件头.如果找到任何一个文件头,则保存这些数据到一个文件,同时检查下面4个条件,关闭和保存该文件.

1.找到该文件的文件头;

2.找到相同文件类型的另一个文件头;

3.找到另一个文件类型的一个文件头;

4、当找不到文件脚或其他此类文件头时,计算文件长度(某些类型的文件,其长度保存在文件前部或按预先设定的文件长度的最大值).

(三)基于数据库文件页式存储格式的恢复方法

利用数据库文件的页式存储格式重建.mdf文件,首先确定要恢复的数据库文件在硬盘上的第0页的位置,即查找pageType 等于 0F的页.在第0页可获取文件的总页数,根据总页数创建一个和要重建的文件等长度的空文件(文件的内容全为0).遍历整个硬盘,根据页号pageID提取数据页,将数据页写入已经创建好的空文件的对应位置.写入所有的页数据或硬盘遍历完毕后,文件的重建即可完成.设新创建的空文件为 F,

则 F 等于(n等于总页数)

Fi 为新建空文件的第i页,用 Si 表示在硬盘上查找到的pageID 等于 i的数据页,

令 Fi 等于 Si ,文件F 将被重建成数据库文件.

但在实际恢复过程中将会遇到以下两种情况:

1、Si 等于 { },即Si 不存在;

2.Si 不唯一;

(四)数据库文件的低层恢复

重建的数据库文件可能不能直接使用,主要原因是由于数据库文件有缺页.如果有缺页Si在文件的用户表的位置上,可以通过修改 Si-1 和 Si+1 的 nextPage 和 prePage修复,即 Si-1 的 nextPage 等于 i+1, Si+1 的prePage 等于 i-1, 当然这是有损修复.

如果重建的数据库文件缺页太多或缺页在文件的系统表的位置上,数据库文件就不可能被数据库直接使用,因此必须通过直接提取用户表的数据.SQL Server 主要有4张系统表记录了数据文件的头信息、系统表信息和用户表信息,它们是 sysobjects、sysindexes、syscolumns 和systypes, 通过这4张表记录的信息再结合数据页的objID 就能将指定的用户表的数据完整的或部分的提取出来,转换成文本文件格式或其他数据格式.

MSSQLSERVER论文参考资料:

结论:MSSQLSERVER数据库恢复方法实例为适合MSSQLSERVER论文写作的大学硕士及相关本科毕业论文,相关mssqlserver 启动不j开题报告范文和学术职称论文参考文献下载。

相关免费毕业论文范文

热门有关优秀论文题目选题

和你相关的