微软的SQL Server 数据库最常用的有两种类型的文件:
1、主要数据文件,文件后缀一般是.MDF;
2、事务日志文件,文件后缀一般是.LDF。
用户数据表、视图、存储过程等等数据,都是存放在MDF文件里,LDF文件是存放MS SQL Server操作过程中的日志记录。
MDF文件必读附加到MS SQL Server数据库环境后,才能正常读取其中的数据。当由于某种原因数据库附加不上,MDF数据库文件的内容就没办法读取,修复的方法有两种:
1、使用MS SQL Server环境进行修复,先以修复模式挂载数据库,然后以单用户模式对数据库进行修复,运气好的话,数据库就能修复成功。
2、用第三方工具直接读取MDF数据文件,把数据表、视图、存储过程等提取出来,然后还原到新建的数据库中。
D-Recovey For MS SQL Server就是能直接读取MDF数据文件的工具,即便用上述第一种方法没有恢复成功的情况下,D-Recovey For MS SQL Server有时候也能读取出MDF数据文件中的数据。下面我们来介绍D-Recovey For MS SQL Server的一些数据恢复功能。
我们先来看一下数据库损坏的几种情况:
1、
由于断电等原因导致数据库质疑,这是一种较为常见的MS SQL Server
数据库损坏的情况,这种情况在上述第一种修复方法往往能修复好,但也有修不好的可能。
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath001.jpg)
2、
数据库附加错误,最常见的如下图:
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath002.jpg)
3、
数据表查询错误,如下图:
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath003.jpg)
数据库报823错误通常是数据页面校验没有通过,一般是由于坏道、突然断电、数据覆盖等原因引起的,有些情况下数据库能附加,但是查询某个表的时候报823错误,用MS SQL Server数据库环境也修复不好。D-Recovey For MS SQL Server对于823错误处理效果不错。
D-Recovey For MS SQL Server具备如下恢复功能:
1
、能恢复由于断电及别的原因引起的数据库状态变成质疑而损坏的MDF
文件
2
、能恢复磁盘坏道及别的原因引起的数据库无法正常附加而损坏的MDF
文件
3
、能恢复数据库状态正常而某些数据表查询出错造成的数据丢失情况的数据
4
、能恢复通过MDF
文件碎片组合(手工提取)而成的MDF
文件中的数据
D-Recovey For MS SQL Server软件界面如下
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath004.jpg)
D-Recovey For MS SQL Server的界面设计按照MS SQL Server企业管理器使用习惯来进行,左边窗口显示的是数数据表、视图、存储过程、用户自定义函数、用户自定义数据类型,点击数据表,就能看到所有数据表名称,数据表“+”号展开后,可以看到数据表字段信息等,点击某个表,右边窗口就显示该数据表的数据记录信息,如果某个数据表记录比较多,可以通过下一页、上一页进行翻页显示。
细心观察的朋友会发现,每一页显示的记录条数可能不一样,这是程序设计的时候,按照一定的数据页面来显示的,比如没个显示页读取64个数据页面(data page),在MDF文件中,每个data page的数据记录数量不一定相等,所以显示出来的记录数量就会有差异。
D-Recovey For MS SQL Server数据库恢复步骤:
1、打开MDF文件,选择数据库版本
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath005.jpg)
2、打开完以后,左边显示数据表、视图、存储过程、用户自定义函数、用户自定义数据类型,点击“+”可展开,点击左边某个表,右边列出表记录。
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath006.jpg)
把数据恢复成脚本文件
数据恢复功能中的导出所有表结构、导出选中表结构是把数据库的表结构导出来,保存成.sql文件,这是一个包含sql语句格式的文本文件,用户可以在MS SQL Server中运行这些sql语句文件,就能创建出数据表。
导出所有表数据和导出选中表数据是把表数据导出来,保存成sql语句文件,用户可以把这些sql语句文件在MS SQL Server查询分析器中运行,把相应表中的数据恢复到MS SQL Server中。值得注意的是,数据库全部保存成sql文件以后,程序生成一个commit.bat批处理文件,运行这个commit.bat批处理文件,填写数据要导入的目标数据库用户名和密码以及数据库服务器IP地址和目标数据库名称,然后批处理文件会自动把所有sql语句文件导入到目标数据库中。
把数据恢复到新的数据库中
数据库恢复中最实用的功能就是把看到的数据表中的数据直接导入MS SQL Server新建的数据库中。加入我们要恢复一个a.mdf文件,我们要把a.mdf文件中的所有数据恢复到数据库服务器127.0.0.1上的DSTtest数据库中,就要点击D-Recovey For MS SQL Server的“把所有表导入数据库”这个按钮,就弹出如下对话框,我们把数据库服务器IP地址、数据库名称、连接数据库的用户名和密码,然后点击确定,a.mdf文件中的数据就自动导入到DSTtest中。
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath007.jpg)
D-Recovey For MS SQL Server还具备检测MDF数据文件数据页面是否正确的功能。
点击“检查数据库文件”按钮,出来如下对话框,我们先择一个mdf文件,开始检测,在检测过程中,我们注意“null page”(即空数据页)和“err page”(即错误数据页)数量的变化,如果错误数据页特别多,那这个mdf文件损坏就比较严重。
![](http://www.dstfix.cn/p_w_picpath11/p_w_picpath008.jpg)
MS SQL Server数据库另外一种常见的恢复方法是通过提取MDF数据页面,然后整合拼接成一个MDF数据文件,通过这种方式恢复一般很少能附加到数据库中,可以通过D-Recovey For MS SQL Server把正常的数据记录提取出来。
注:本文由D-Recovey For MS SQL Server软件开发者达思CTO覃廷良撰写,转载请注明出处(
http://www.dstfix.com),D-Recovey For MS SQL Server官方网站:
http://www.d-recovery.org
总结:
1、D-Recovey For MS SQL Server总体设计思想是直接读取MDF文件中正常的数据记录,并把这些数据保存成sql语句或者直接导入一个新的数据库中,它不是设计成直接修复原始MDF文件使MDF文件能正常附加到数据库中。当数据库管理员使用任何方法都不能把数据库修复使它正常附加的情况下,D-Recovey For MS SQL Server就显得格外有用。
2、数据能够成功恢复的基础是MDF文件关键系统表没有被破坏,数据记录内容确实存在于MDF文件之中,如果数据记录内容被破坏被覆盖,数据恢复将不能正确恢复原来的信息。
转载于:https://blog.51cto.com/199818/541693