由于种种原因,我们如果当时仅仅备份了mdf文件,那么恢复起来就是一件很麻烦的事情了。
如果您的mdf文件是当前数据库产生的,那么很侥幸,也许你使用sp_attach_db或者sp_attach_single_file_db可以恢复数据库,但是会出现类似下面的提示信息

设备激活错误。物理文件名 'C:\Program Files\Microsoft SQL Server\MSSQL\data\test_Log.LDF' 可能有误。
已创建名为 'C:\Program Files\Microsoft SQL Server\MSSQL\Data\test_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 Files\Microsoft SQL Server\MSSQL\Data\test_log.ldf')

执行过程中,如果遇到下列提示信息:
服务器: 消息 5030,级别 16,状态 1,行 1
未能排它地锁定数据库以执行该操作。
DBCC 执行完毕。如果 DBCC 输出了错误信息,请与系统管理员联系。
说明您的其他程序正在使用该数据库,如果刚才您在F步骤中使用SQL Server Enterprise Manager打开了test库的系统表,那么退出SQL Server Enterprise Manager就可以了。
正确执行完成的提示应该类似于:
警告: 数据库 'test' 的日志已重建。已失去事务的一致性。应运行 DBCC CHECKDB 以验证物理一致性。将必须重置数据库选项,并且可能需要删除多余的日志文件。数据恢复 sql数据库修复 密码恢复 sql数据库恢复 硬盘异响 坏道修复 文件恢复 sql server修复 文件修复 raid数据恢复 sql数据库修复 raid磁盘阵列 sql恢复 sql server恢复 硬盘数据恢复 硬盘坏道修复 硬盘数据修复 数据修复
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

转载于:https://www.cnblogs.com/xiaobaidhg/archive/2006/11/10/556498.html

没有日志,只有MDF文件如何恢复数据库(转)[相关推荐

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

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

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

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

  3. 只有mdf文件的恢复技术

    < DOCTYPE html PUBLIC -WCDTD XHTML StrictEN httpwwwworgTRxhtmlDTDxhtml-strictdtd> 由于种种原因,我们如果当 ...

  4. 关于SQL server导入.mdf文件显示附加数据库时出错。有关详细信息,请单击“消息”列中的超链接

    关于SQL server导入.mdf文件显示附加数据库时出错.有关详细信息,请单击"消息"列中的超链接 问题原因 看了一下,应该是从别人那边拷过来的数据库文件没有本地操作系统的权限 ...

  5. .mdf数据库恢复mysql_SQL2000下仅有MDF文件时的数据库恢复方法

    29日星期六,考试到服务器已经有N久没有重装,速度变得特别慢,终于下定决心重装.经过一番努力,终于把系统重装,结果在恢复公文交换中心的数据时伤眼了:数据库LDF文件在D盘下,没有备份. 打开浏览器上网 ...

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

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

  7. oracle某个表丢失,丢失一个控制文件并恢复数据库

    只丢失或损坏一个控制文件的情况下来恢复数据库,相对来说简单一点.一般来说,控制文件都需要形成 一个多路径冗余策略,来提高数据库的安全性.这样的话只需将完好的控制文件复制一个副本放到丢失或者 损坏了的控 ...

  8. SqlServer中除了sql和bak你还可以使用mdf文件来进行数据库的添加和分离

    场景 从数据库A中将数据或者结构同步或者传输到B数据库. 可以将A中的表选择转储为sql文件 或者可以直接使用备份将数据库进行备份 注: 博客: https://blog.csdn.net/badao ...

  9. mysql根据idb还原数据_mysql通过idb文件,恢复数据库

    原因: 由于一次未知原因,服务器停机后,导致数据库不能启动,由于刚接手项目,对此数据库的配置不是那么清晰,分析了很多,最后还是没发正常启动.由于发现数据idb文件还在,最后就采取了险招,重新安装mys ...

最新文章

  1. 你的企业客户服务,离卓越还有多远?
  2. View4.5测试参考文档7--View Administrator安装、配置、创建桌面池
  3. Linux权限和进程管理、网络配置、任务调度(四)
  4. Ubuntu 17.04 Chrome 安装
  5. 微信突然出现redirect_uri 参数错误
  6. 关于dorado的存储问题
  7. 休眠:保存vs持久并保存或更新
  8. OpenCV实战5: LBP级联分类器实现人脸检测
  9. ajaxpro.2.dll使用【转帖】
  10. Python 3 从入门到精通 Mac OS
  11. python异步编程 图书_Python学习之异步编程asyncio
  12. 我的IT之路------来自黑马程序员
  13. 阿里云商标注册教程:新手自助申请详细步骤
  14. H5页面、微页、轻应用、轻app、场景应用制作工具:
  15. 改(微微微微微小说)
  16. C++ 鼠标模拟程序
  17. php获取视频信息,支持优酷土豆新浪腾讯等多家网站
  18. MATLAB的疲劳检测系统
  19. js获取ISO8601规范时间,使用UTC时间,格式为:YYYY-MM-DDThh:mm:ssZ
  20. 电影排行榜(requests + bs4 scrapy)

热门文章

  1. mysql的分页怎么不对_mysql一对多关联查询分页错误问题的解决方法
  2. 什么是Servlet?
  3. @PreAuthorize 权限控制的原理
  4. 024_jdbc-mysql的Dao模式
  5. Springboot使用bean方式详解(附代码)
  6. python索引 切片_python_索引_切片
  7. python 函数调用 不允许关键字参数_你所不知道的Python|函数参数的演进之路
  8. arcgis字段计算器赋值_ARCGIS操作技巧总结
  9. Drawable 详解
  10. 基于Java的RDMA高性能通信库(四):DaRPC