MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加

微软的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数据库损坏的情况,这种情况在上述第一种修复方法往往能修复好,但也有修不好的可能。

2、 数据库附加错误,最常见的如下图:

3、 数据表查询错误,如下图:

数据库报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软件界面如下

D-Recovey For MS SQL Server的界面设计按照MS SQL Server企业管理器使用习惯来进行,左边窗口显示的是数数据表、视图、存储过程、用户自定义函数、用户自定义数据类型,点击数据表,就能看到所有数据表名称,数据表“+”号展开后,可以看到数据表字段信息等,点击某个表,右边窗口就显示该数据表的数据记录信息,如果某个数据表记录比较多,可以通过下一页、上一页进行翻页显示。

细心观察的朋友会发现,每一页显示的记录条数可能不一样,这是程序设计的时候,按照一定的数据页面来显示的,比如没个显示页读取64个数据页面(data page),在MDF文件中,每个data page的数据记录数量不一定相等,所以显示出来的记录数量就会有差异。

D-Recovey For MS SQL Server数据库恢复步骤:

1、打开MDF文件,选择数据库版本

2、打开完以后,左边显示数据表、视图、存储过程、用户自定义函数、用户自定义数据类型,点击“+”可展开,点击左边某个表,右边列出表记录。

把数据恢复成脚本文件

数据恢复功能中的导出所有表结构、导出选中表结构是把数据库的表结构导出来,保存成.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中。

D-Recovey For MS SQL Server还具备检测MDF数据文件数据页面是否正确的功能。

点击“检查数据库文件”按钮,出来如下对话框,我们先择一个mdf文件,开始检测,在检测过程中,我们注意“null page”(即空数据页)和“err page”(即错误数据页)数量的变化,如果错误数据页特别多,那这个mdf文件损坏就比较严重。

MS SQL Server数据库另外一种常见的恢复方法是通过提取MDF数据页面,然后整合拼接成一个MDF数据文件,通过这种方式恢复一般很少能附加到数据库中,可以通过D-Recovey For MS SQL Server把正常的数据记录提取出来。

1、D-Recovey For MS SQL Server总体设计思想是直接读取MDF文件中正常的数据记录,并把这些数据保存成sql语句或者直接导入一个新的数据库中,它不是设计成直接修复原始MDF文件使MDF文件能正常附加到数据库中。当数据库管理员使用任何方法都不能把数据库修复使它正常附加的情况下,D-Recovey For MS SQL Server就显得格外有用。

2、数据能够成功恢复的基础是MDF文件关键系统表没有被破坏,数据记录内容确实存在于MDF文件之中,如果数据记录内容被破坏被覆盖,数据恢复将不能正确恢复原来的信息。

如果有遇到相同数据库问题的朋友可以联系我

QQ:3449645657

时间: 2024-10-12 16:17:30

MS SQL Server数据库修复/MDF数据文件数据恢复/MDF质疑/mdf无法附加的相关文章

MS SQL SERVER数据库简单回顾

MS SQL SERVER数据库 1.创建数据库 create database javateam; 2.使用数据库 use javateam; 3.创建表 create   table   表名 ( 字段名    字段类型   主键   字段增长(从X开始  , 每次加X个), 字段名  字段类型, 字段名  字段类型 ); create table peopleNone ( pid int primary key identity(1,1), pname varchar(32), psex

C#同步SQL Server数据库中的数据--数据库同步工具[同步新数据]

C#同步SQL Server数据库中的数据 1. 先写个sql处理类: using System; using System.Collections.Generic; using System.Data; using System.Data.SqlClient; using System.Text; namespace PinkDatabaseSync { class DBUtility : IDisposable { private string Server; private string

MS Sql Server 数据库或表修复

提示数据库处于恢复模式时重建日志文件可以解决 DBCC REBUILD_LOG('db_name','c:\mssql7\data\dbxxx_3.LDF') MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令. 1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasen

MS Sql Server 数据库或表修复(DBCC CHECKDB)

MS Sql Server 提供了很多数据库修复的命令,当数据库质疑或是有的无法完成读取时可以尝试这些修复命令.  1. DBCC CHECKDB  重启服务器后,在没有进行任何操作的情况下,在SQL查询分析器中执行以下SQL进行数据库的修复,修复数据库存在的一致性错误与分配错误. use master declare @databasename varchar(255) set @databasename='需要修复的数据库实体的名称' exec sp_dboption @databasena

MS SQL Server数据库两个库之间相同数据表名内容批量对比方法

上一篇"导出记录数量对比-软件测试方法(一)",主要介绍数据导出结果记录数量和原始正常好库的记录数量精确对比,测试软件导出少数据的相关bug.本文测试方法旨在更精确比对表记录内部数据差异,记录数量的对比只是恢复准确率的必要条件,而记录内部的字段数据内容是否一致,才是比较的终极目标. 一. 测试目的:在很多情况下,数据导出是以记录数量来衡量是否齐全.在某些情况下,数据记录数量导出是一致的,但,记录内部数据却出现差异,比如某些数字字段,一旦出现差异,其结果将带来不准确.本测试大纲目的是比对

MS Sql Server 数据库或表修复(Log日志文件损坏的修复方法)

----------------- [1] use master go sp_configure 'allow updates',1 reconfigure with override go ----------------- [2] update sysdatabases set status=-32768 where dbid=DB_ID('zc_post') ----------------- [3] dbcc rebuild_log('zc_post','d:\zc_post_log.l

最新后缀.*4444后缀勒索病毒文件及SQL Server数据库修复方案

近期GlobeImposter变种在国内较大范围内传播,网络安全研究员提醒用户加强防范,应对此类勒索软件***. 威胁概述近期我们发现GlobeImposter3.0变种勒索病毒在国内较大范围内传播.GlobeImposter勒索病毒家族向来以垃圾邮件.扫描***和远程桌面服务密码暴破方式进行传播,通过分析本次捕获的最新样本并未发现样本具备其他新的传播方式.该家族加密的后缀名也随着变种的不同在进行变化,已经出现的变种加密后的后缀名有:.ox4444 .help4444 .all4444 .chi

SQL SERVER数据库跨服务器数据导入

今天从服务器导入到本地表数据,因为跨服务器,所以用特殊的方法 ---根据原表创建新表,并且把数据导入select * into 表 from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) ---已经有表结构insert into 表 select* from openrowset('SQLOLEDB' ,'sql服务器名';'用户名';'密码' ,数据库名.dbo.表名) 如果本地Ad Hoc Distributed Quer

查询MS SQL Server数据库死锁的一个存储过程

查询Sqlserver数据库死锁的一个存储过程 使用sqlserver作为数据库的应用系统,都避免不了有时候会产生死锁.死锁出现以后,维护人员或者开发人员大多只会通过sp_who来查找死锁的进程,然后用sp_kill杀掉. 利用sp_who_lock这个存储过程,可以很方便的知道哪个进程出现了死锁,出现死锁的问题在哪里. --创建或修改sp_who_lock存储过程 CREATE procedure sp_who_lock --ALTER procedure sp_who_lock as beg