< DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd>

由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,
但是会出现类似下面的提示信息
设备激活错误。物理文件名 'C:Program FilesMicrosoft SQL ServerMSSQLdatatest_Log.LDF ' 可能有误。
已创建名为 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.LDF ' 的新日志文件。
但是,如果您的数据库文件是从其他计算机上复制过来的,那么很不幸,也许上述办法就行不通了。你也许会得到类似下面的错误信息
服务器: 消息 1813,级别 16,状态 2,行 1
未能打开新数据库 'test '。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'd:test_log.LDF ' 可能有误。

怎么办呢?别着急,下面我们举例说明恢复办法。
A.我们使用默认方式建立一个供恢复使用的数据库(如test)。可以在SQL Server Enterprise Manager里面建立。
B.停掉数据库服务器。
C.将刚才生成的数据库的日志文件test_log.ldf删除,用要恢复的数据库mdf文件覆盖刚才生成的数据库数据文件test_data.mdf。
D.启动数据库服务器。此时会看到数据库test的状态为“置疑”。这时候不能对此数据库进行任何操作。
E.设置数据库允许直接操作系统表。此操作可以在SQL Server Enterprise Manager里面选择数据库服务器,按右键,选择“属性”,在“服务器设置”页面中将“允许对系统目录直接修改”一项选中。也可以使用如下语句来实现。
use master
go
sp_configure 'allow updates ',1
go
reconfigure with override
go

F.设置test为紧急修复模式
update sysdatabases set status=-32768 where dbid=DB_ID( 'test ')
此时可以在SQL Server Enterprise Manager里面看到该数据库处于“只读置疑脱机紧急模式”可以看到数据库里面的表,但是仅仅有系统表

G.下面执行真正的恢复操作,重建数据库日志文件
dbcc rebuild_log( 'test ', 'C:Program FilesMicrosoft SQL ServerMSSQLDatatest_log.ldf ')
执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。[brown][/i]
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test ' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
此时打开在SQL Server Enterprise Manager里面会看到数据库的状态为“只供DBO使用”。此时可以访问数据库里面的用户表了。

H.验证数据库一致性(可省略)
dbcc checkdb( 'test ')
一般执行结果如下:
CHECKDB 发现了 0 个分配错误和 0 个一致性错误(在数据库 'test ' 中)。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。

I.设置数据库为正常状态
sp_dboption 'test ', 'dbo use only ', 'false '
如果没有出错,那么恭喜,现在就可以正常的使用恢复后的数据库啦。

J.最后一步,我们要将步骤E中设置的“允许对系统目录直接修改”一项恢复。因为平时直接操作系统表是一件比较危险的事情。当然,我们可以在SQL Server Enterprise Manager里面恢复,也可以使用如下语句完成
sp_configure 'allow updates ',0
go
reconfigure with override
go
//我通过上面的步骤成功的将mdf文件附加

本文转自 netcorner 博客园博客,原文链接:http://www.cnblogs.com/netcorner/archive/2008/04/24/2912166.html  ,如需转载请自行联系原作者

只有mdf文件的恢复技术相关推荐

  1. 仅剩数据库mdf文件,恢复SqlServer2008正常数据库操作

    仅剩数据库mdf文件,恢复SqlServer2008正常数据库,操作如下: 情况一: 1.你已经将数据库分离出来了,但是日志文件太大,大到你没有多余的空间干别的:现在你将日志文件直接删除了, 咱开始新 ...

  2. 没有日志,只有MDF文件如何恢复数据库(转)[

    由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了. 如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_sin ...

  3. 只有MDF文件如何恢复数据库

    由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了. 可以用以下命令恢复数据库: EXEC  sp_attach_single_file_db   @dbname   ...

  4. SQL SERVER 只有MDF文件的恢复

    方式一: 1.create a database same name as .mdf file; 2.Stop SQL Server; 3. recover .mdf file; 4. Start S ...

  5. 从MDF文件恢复SqlServer2000数据库

    从MDF文件恢复SqlServer2000数据库 2009-4-24 10:00:26 编辑: 福建精才网 源自:电脑知识爱好者 sql数据库修复技术 SQL Server数据库备份有两种方式,一种是 ...

  6. LDF文件丢失, 如何仅用MDF文件恢复数据库呢?

    笔者的一个大小为2 TB的SQL Server的database的LDF文件在玩存储盘映射的过程中莫名其妙的丢失了. 好在MDF文件还在. 笔者慌了, Bruce Ye告诉笔者, 不用着急, 光用MD ...

  7. 数据库只有mdf文件而没有ldf文件,如何恢复数据库

    举例:数据库名为 TestData 第一步: 新建一个同名的数据库即TestData数据库 第二步: 停掉数据库服务,找到刚才新建的TestData数据库的mdf和ldf文件,删掉ldf文件,再用之前 ...

  8. SQL2005恢复只有mdf文件的数据库

    我把原来的数据库分离后,直接把日志文件给干掉了.原来在SQL 2000里经常这么干,只用一个mdf就附加了.没想到sql2005居然不行.我试验了一圈 终于找到一个成功的方法.转载,供后来者参考. S ...

  9. 只有mdf文件和ldf文件--怎么恢复数据库

    关于数据库的备份与还原 刚学数据库的时候,不知道数据库的备份和还原,就直接去拷贝数据库mdf和ldf文件,后来会了数据库的备份和还原,一直也就没有注意拷贝mdf和ldf带来的问题. 现在需要参考原来拷 ...

最新文章

  1. 记一次大规模数据迁移和加密
  2. Vue教程6【完结】【vue-router】路由,路由传参,编程式路由导航,缓存路由组件,路由守卫,路由模式,vue ui组件库
  3. python之路---装饰器函数
  4. 002_SpringBoot整合Servlet
  5. 前端进阶之如何正确判断this的指向?
  6. python orm框架sqlalchemy_python orm 框架中sqlalchemy用法实例详解
  7. 自定义ClassLoader和双亲委派机制
  8. yocto添加登录用户和密码
  9. mysql 键缓冲区_mysql:键缓存
  10. 机器学习会成为2017年大数据​分析的瓦解者吗?
  11. iptables禁止国外ip访问-脚本
  12. 常用的vue组件库总结
  13. Modal中的确认和取消按钮
  14. 【练习】多表查询练习
  15. 概率论的学习整理4:全概率公式
  16. Markdown转Jupyter
  17. manjaro 亮度调节
  18. 大数据社会的十三大具体应用场景(二)
  19. xboxone硬盘坏的表现_硬盘或移动硬盘认不到时,应该怎样进行故障的检测才正确...
  20. 强改微信内置浏览器——让x5内核滚粗

热门文章

  1. DevExpress的下拉框控件ComboBoxEdit控件的使用
  2. 新建springBoot项目提示:The type org.springframework.context.ConfigurableApplicationContext cannot be resol
  3. redis高级-内存淘汰策略
  4. python进阶学啥书籍_2018年Python学习进阶书籍推荐
  5. Java里optionsMenu.add_NoActionBar主题下如何添加OptionsMenu
  6. 深圳上海场 | 神策 2019 数据驱动大会「PPT 下载」新鲜出炉!
  7. 2019 神策春招 | “数”天下神人,都“据”于此
  8. 华润网络签约神策数据 数据赋能打造跨行业综合移动服务生态圈
  9. 专访 | 神策数据CEO桑文锋:谁说大数据不需要「小而美」
  10. 为梦想而战,高考励志主题教育班会PPT