MDF文件在SQL Server中的恢复技术

先把要恢复的文件置于MS SQL里的DATA文件里,进入MS SQL主数据库服务器。

  1.我们使用默认方式建立一个供恢复使用的数据库(如MHDYF2005)。可以在SQL Server里面建立。

  2.停掉数据库服务器。

  3.将刚才生成的数据库的日志文件MHDYF2005_log.ldf删除,用要恢复的数据库mdf(yu1.mdf)文件覆盖刚才生成的数据库数据文件MHDYF2005_data.mdf。

  4.启动数据库服务器。(刷新之后)此时会看到数据库MHDYF2005的状态为“置疑”。这时候不要对此数据库进行任何操作。

  5.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。

Code:
use mastergosp_configure ‘allow updates‘,1goreconfigure with overridego

  6.设置MHDYF2005为紧急修复模式,语句如下:

Code:
update sysdatabases set status=-32768 where dbid=DB_ID(‘MHDYF2005‘)

  此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读\置疑\脱机\紧急模式”可以看到数据库里面的表,但是仅仅有系统表。

  7.下面执行真正的恢复操作,重建数据库日志文件

Code:
dbcc rebuild_log(‘MHDYF2005‘,‘C:\Program Files\Microsoft 
SQL Server\MSSQL\Data\MHDYF2005_log.ldf‘)

  执行过程中,如果遇到下列提示信息:

  服务器: 消息 5030,级别 16,状态 1,行 1

  未能排它地锁定数据库以执行该操作。

  DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了MHDYF2005库的系统表,那么退出SQL Server Enterprise Manager就可以了。

  正确执行完成的提示应该类似于:

  警告: 数据库 ‘MHDYF2005‘ 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

  8.验证数据库一致性(可省略),语句如下:

Code:
dbcc checkdb(‘MHDYF2005‘)

  一般执行结果如下:CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 ‘MHDYF2005‘ 中)。DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

  9.设置数据库为正常状态,语句如下:

Code:
sp_dboption ‘MHDYF2005‘,‘dbo use only‘,‘false‘

  如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

  10.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成:

Code:
sp_configure ‘allow updates‘,0goreconfigure with overridego

  一共10步,就这样完工了。全部恢复过程就是这样了,您能恢复了吗?

(0)

相关推荐

  • 教你轻松恢复/修复SQL Server的MDF文件

    首先:如果备份的数据库有两个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件,就可以了. 或者在查询分析器中输入: 复制代码 代码如下: sp_attach_db "数据库名称","路径\文件名.ldf","路径\文件名.MDF" SQL Server数据库备份有两种方式,一种是使用BACKUP DATABASE将数据库文件备份出去,另外一种就是直接拷贝数据库文件mdf和日志文

  • SQLServer2005 没有日志文件(*.ldf) 只有数据文件(*.mdf) 恢复数据库的方法

    复制代码 代码如下: exec sp_attach_db exun,'d:\exun2.mdf' 一句话就可以了. 网上看了那些比较繁琐的,都是sql server 2000版本的. (可能执行一次不能成功,测试了下,有时候需要执行2次以上命令才行) 执行了之后,记得刷新数据库,不然是不会显示的

  • sqlserver附加.mdf权限问题解决

    问题:数据库附加.mdf文件时,提示无法打开物理文件,操作系统错误5:"5(拒绝访问)" 错误:5120. 解决方案: 数据库当前账户对存放.mdf文件的文件夹权限不足,该文件夹权限角色加入Everyone.并赋予读写权限即可. 人总要去积累生活.工作上的点点滴滴,慢慢的进步,以后回头看看,笑笑,顺便学学,人都说回忆才是最美的.

  • 恢复.mdf 数据库步骤

    方法一(只有mdf没有日志文件的可以恢复) 证明有效 1.新建同名数据库. 2.把该数据库设置为脱机. 3.删除其日志文件(.LDF),不删除后边的过程执行通不过. 4.在在查询分析器中以超级用户登入,执行以下存储过程,必须以超级用户登入,这是系统级存存处过程. EXEC sp_detach_db @dbname = 'xxx' //@dbnam 为要还原的数据库 EXEC sp_attach_single_file_db @dbname = 'xxx', @physname = 'yyyy'

  • 没有SQL Server数据库时如何打开.MDF文件

    如果您在试图打开一个.MDF数据库文件时,却发现自己没有安装SQL Server数据库,该怎么办呢?这时候,如果恰巧您的机子上装有Visual Studio 2005或者是更高的版本时,不用安装SQL Server数据库也能打开.MDF数据库文件.本文我们主要介绍了这一方法的实现,接下来我们就开始介绍. 解决方法: 打开Visual Studio 2005,在项目中点击工具→连接到数据库会出现更改数据源,选择, 点确定,会出现如下窗口: 浏览到你的mdf数据库文件: 点打开 然后点连接测试,如果

  • mdf文件和ldf文件导入到sql server 2005实现语句

    复制代码 代码如下: USE master; Go EXEC sp_attach_db @dbname = N'数据库名', @filename1 = N'完整目录的mdf文件', @filename2 = N'完整目录的ldf文件'; GO 如 USE master; Go EXEC sp_attach_db @dbname = N'db_shop', //db_shop是数据库名字 @filename1 = N'E:\TM\07\Database\db_shop_Data.MDF', @fi

  • sqlserver只有MDF文件恢复数据库的方法

    在查询中执行下列语句 EXEC sp_attach_single_file_db @dbname = 'tggov_Data', @physname = 'E:\tggov_Data\www.jb51.net.MDF' 'tggov_Data' 为恢复的数据库名 'E:\tggov_Data\tggov_Data.MDF' 物理文件位置

  • MDF文件在SQL Server中的恢复技术

    先把要恢复的文件置于MS SQL里的DATA文件里,进入MS SQL主数据库服务器. 1.我们使用默认方式建立一个供恢复使用的数据库(如MHDYF2005).可以在SQL Server里面建立. 2.停掉数据库服务器. 3.将刚才生成的数据库的日志文件MHDYF2005_log.ldf删除,用要恢复的数据库mdf(yu1.mdf)文件覆盖刚才生成的数据库数据文件MHDYF2005_data.mdf. 4.启动数据库服务器.(刷新之后)此时会看到数据库MHDYF2005的状态为"置疑".

  • SQL Server中的文件和文件组介绍

    文件和文件组简介 在SQL Server中,数据库在硬盘上的存储方式和普通文件在Windows中的存储方式没有什么不同,仅仅是几个文件而已.SQL Server通过管理逻辑上的文件组的方式来管理文件. SQL Server通过文件组对数据文件进行管理.我们看到的逻辑数据库由一个或者多个文件组构成. 结构图如下: 文件组管理着磁盘上的文件,文件中存放的就是SQL Server的实际数据. 为什么通过文件组来管理文件 从用户的角度来说,创建对象时需要指定存储文件组的只有三种数据对象:表,索引和大对象

  • SQL Server误区30日谈 第3天 即时文件初始化特性可以在SQL Server中开启和关闭

    本系列文章是我在sqlskill.com的PAUL的博客看到的,很多误区都比较具有典型性和代表性,原文来自T-SQL Tuesday #11: Misconceptions about.... EVERYTHING!!,经过我们团队的翻译和整理发布在AgileSharp和博客园上.希望对大家有所帮助. 误区 #3: 即时文件初始化特性可以在SQL Server中 a)开启 和 b)关闭 a)是不允许的  b)是允许的 即时文件初始化是一个在SQL Server 2005以及之上的版本鲜为人知的特

  • 在SQL Server中迁移数据的几种方法

    1.通过工具"DTS"的设计器进行导入或者导出 DTS的设计器功能强大,支持多任务,也是可视化界面,容易操作,但知道的人一般不 多,如果只是进行SQL Server数据库中部分表的移动,用这种方法最好,当然,也可以进行全部表的移动.在SQL Server Enterprise Manager中,展开服务器左边的+,选择数据库,右击,选择All tasks/Import Data...(或All tasks/Export Data...),进入向导模式,按提示一步一步走就行了,里面分得很

  • SQL Server中避免触发镜像SUSPEND的N种方法

    背景: 我们在使用数据库的过程中,很多时候要追求性能,特别在处理大批量数据的时候更希望快速处理.那么对SQL SERVER而言,数据库实现大批量插入的优化方案,这里特别介绍通过大容量插入的一种方式. 基本原理: 简单恢复模式按最小方式记录大多数大容量操作,对于完整恢复模式下的数据库,大容量导入期间执行的所有行插入操作被完整地记录到事务日志中.如果数据导入量较大,会导致迅速填满事务日志.对于大容量导入操作,按最小方式记录比完整记录更有效,并减少了大容量导入操作填满日志空间的可能性,所以性能会得到极

  • sql server中错误日志errorlog的深入讲解

    一 .概述 SQL Server 将某些系统事件和用户定义事件记录到 SQL Server 错误日志和 Microsoft Windows 应用程序日志中. 这两种日志都会自动给所有记录事件加上时间戳. 使用 SQL Server 错误日志中的信息可以解决SQL Server的相关问题. 查看 SQL Server 错误日志可以确保进程(例如,备份和还原操作.批处理命令或其他脚本和进程)成功完成. 此功能可用于帮助检测任何当前或潜在的问题领域,包括自动恢复消息(尤其是在 SQL Server 实

  • SQL Server中分区表的用法

    目录 一.分区表简介 二.对表分区的理由 三.分区表的操作步骤 第一步.定义分区函数: 第二步.定义分区构架 第三步.定义分区表 四.分区表的分割 五.分区表的合并 一.分区表简介 分区表是SQL Server2005新引入的概念,这个特性在逻辑上将一个表在物理上分为多个部分.(即它允许将一个表存储在不同的物理磁盘里).在SQL Server2005之前,分区表实际上是分布式视图,也就是多个表做union操作. 分区表在逻辑上是一个表,而物理上是多个表.在用户的角度,分区表和普通表是一样的,用户

  • 在SQL Server中使用CLR调用.NET方法实现思路

    介绍 我们一起来做个示例,在.NET中新建一个类,并在这个类里新建一个方法,然后在SQL Server中调用这个方法.按照微软所述,通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显著地增强了数据库编程模型. 这使得开发人员可以用任何CLR语言(如C#.VB.NET或C++等)来写存储过程.触发器和用户自定义函数. 我们如何实现这些功能呢? 为了使用CLR,我们需要做如下几步: 1.在.NET中新建一个类,并在这个类里

  • SQL Server中数据行批量插入脚本的存储实现

    无意中看到朋友写的一篇文章"将表里的数据批量生成INSERT语句的存储过程的实现".我仔细看文中的两个存储代码,自我感觉两个都不太满意,都是生成的单行模式的插入,数据行稍微大些性能会受影响的.所在公司本来就存在第二个版本的类似实现,但是是基于多行模式的,还是需要手工添加UNAION ALL来满足多行模式的插入.看到这篇博文和基于公司数据行批量脚本的存储的缺点,这次改写和增强该存储的功能. 本存储运行于SQL Server 2005或以上版本,T-SQL代码如下: IF OBJECT_I

  • EXCEL数据上传到SQL SERVER中的简单实现方法

    EXCEL数据上传到SQL SERVER中的方法需要注意到三点!注意点一:要把EXCEL数据上传到SQL SERVER中必须提前把EXCEL传到服务器上.做法: 在ASP.NET环境中,添加一个FileUpload上传控件后台代码的E.X: 复制代码 代码如下: if (FileUpload1.HasFile) //如果用户确实选择了上传控件的浏览按钮,浏览文件成功. { this.FileUpload1.SaveAs("E:\\Temp\\" + FileUpload1.FileNa

随机推荐