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

 更新时间:2007年01月08日 00:00:00   作者:  
先把要恢复的文件置于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步,就这样完工了。全部恢复过程就是这样了,您能恢复了吗?

相关文章

  • 分享一个简单的sql注入

    分享一个简单的sql注入

    所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。接下来给大家分享一个简单的sql注入,一起看看吧
    2017-07-07
  • SQLite Delete详解及实例代码

    SQLite Delete详解及实例代码

    这篇文章主要介绍了SQLite Delete详解及实例代码的相关资料,需要的朋友可以参考下
    2017-01-01
  • sqlserver (parse name)字符串截取的方法

    sqlserver (parse name)字符串截取的方法

    sqlserver (parse name)字符串截取的方法,需要的朋友可以参考一下
    2013-04-04
  • Spark SQL 2.4.8 操作 Dataframe的两种方式

    Spark SQL 2.4.8 操作 Dataframe的两种方式

    这篇文章主要介绍了Spark SQL 2.4.8 操作 Dataframe的两种方式,方式一是通过dsl操作,方式二是利用sql方式操作,每种方式通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10
  • SQL Server数据表压缩

    SQL Server数据表压缩

    本文详细讲解了SQL Server数据表压缩,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-05-05
  • SQL Server 分页查询存储过程代码

    SQL Server 分页查询存储过程代码

    SQL Server分页查询存储过程,对于想使用存储过程实现分页的朋友可以参考下。
    2010-05-05
  • SQLServer只赋予创建表权限的全过程

    SQLServer只赋予创建表权限的全过程

    在SQL Server中进行各种操作是非常常见的操作,下面这篇文章主要给大家介绍了关于SQLServer只赋予创建表权限的相关资料,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
    2022-04-04
  • sqlserver数据库大型应用解决方案经验总结

    sqlserver数据库大型应用解决方案经验总结

    对于一个大型的互联网应用,每天百万级甚至上亿的PV无疑对数据库造成了相当高的负载。对于系统的稳定性和扩展性造成了极大的问题
    2013-10-10
  • 关于 SQL Server ErrorLog 错误日志说明

    关于 SQL Server ErrorLog 错误日志说明

    关于 SQL Server ErrorLog 错误日志说明学习sqlserver的朋友可以参考下。
    2011-04-04
  • 一条select语句引起的瓶颈问题思考

    一条select语句引起的瓶颈问题思考

    公司一项目新上线,刚上线的第2天,在后台发现数据库服务器与IIS服务器的网络IO出现瓶颈,1GB的网络带宽,占用了70%-100%,也就是每秒传输数据700MB-1GB,数据库使用内存高达21GB
    2013-02-02

最新评论