单位的数据库崩溃,无备份,但MDF和LDF文件是好的,请问能从日志文件恢复数据库吗?如果能该怎么操作?各位帮帮小弟吧!!谢谢!!!

XTZM 2003-12-12 01:10:39
单位的数据库崩溃,无备份,但MDF和LDF文件是好的,请问能从日志文件恢复数据库吗?如果能该怎么操作?各位帮帮小弟吧!!谢谢!!!

附加数据库就行了:

企业管理器
--右键"数据库"
--所有任务
--附加数据库
--选择你的.mdf文件名
--确定
--如果提示没有.ldf文件,是否创建,选择"是"


查询分析器中的方法:
--有数据文件及日志文件的情况
sp_attach_db '数据库名'
,'数据文件名(*.mdf注意要带目录)' --后面可以是用,分隔的该数据库的多个数据文件
,'日志文件名(*.ldf注意要带目录)' --后面可以是用,分隔的该数据库的多个日志文件

--如果只有数据文件的情况
sp_attach_single_file_db '数据库名'
,'数据文件名(*.mdf注意要带目录)' --后面可以是用,分隔的该数据库的多个数据文件

错误:
未能打开新数据库 'Hotel'。CREATE DATABASE 将终止。
设备激活错误。物理文件名 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\Hotel_Log.LDF' 可能有误。
设备激活错误。物理文件名 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\Hotel_log1_Log.LDF' 可能有误。

如何处理????????
...全文
79 13 打赏 收藏 举报
写回复
13 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
Leevy 2003-12-14
遇到过同样问题,
新建数据库后,
覆盖原文件就可以.

  • 打赏
  • 举报
回复
饮水需思源 2003-12-14
只留一个.mdf数据库,直接在SQL的企业管理器中选择“附加数据库”也行
  • 打赏
  • 举报
回复
hothoke 2003-12-14

首先分离数据库

EXEC sp_detach_db 'Hotel', 'true'

接着删除日志文件“D:\Program Files\Microsoft SQL Server\MSSQL\Data\Hotel_Log.Ldf"


单挂数据库

EXEC sp_attach_single_file_db @dbname = 'Hotel',
@physname = 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\Hotel_Data.mdf'

如附加报错的话:

停止数据库服务,将数据库文件“Hotel_Data.mdf”移动其它目录,再启动数据库服务,新建一同名数据库(文件名,文件组都和原来的一样),然后停止数据库服务,用原来移出去的文件替换新建的数据库文件,同时删除“Hotel_Log.Ldf"文件,启动数据库,该数据库“被设未suspect”(置疑)

在“企业管理器”——>“控制台根目录”——>“Microsoft SQL Servers”——>“SQL Server 组”——>“(local)(Windows NT)”上右击,在快速菜单上选择“属性”,然后选择“服务器设置”,把“服务器行为”下的“允许对系统目录直接进行修改(M)”左边的方框打钩。

然后把数据库改成紧急模式:
sp_configure 'allow', 1
reconfigure with override
update sysdatabases set status = 32768 where name = 'Hotel'

注:使用 allow updates 选项指定是否可以直接更新系统表。默认情况下,allow updates 选项被禁用(设为 0),所以用户不能通过特殊更新来更新系统表,而只能通过系统存储过程更新系统表。当禁用 allow updates 选项时,尽管您可能有足够的权限(由 GRANT 语句赋予),仍不能进行更新。如果使用 sp_configure 系统存储过程将 allow updates 设置为 1,则必须使用 RECONFIGURE WITH OVERRIDE 语句。该设置立即生效(无需停止并重新启动服务器)。

(把LDF文件改名或删除)再执行

DBCC REBUILD_LOG ('Hotel', 'D:\Program Files\Microsoft SQL Server\MSSQL\Data\Hotel_Log.LDF' )

恢复数据库紧急模式

update sysdatabases set status = 0 where name = 'Hotel'

执行

restore database Hotel WITH RECOVERY
exec sp_configure 'allow', 0
reconfigure with override

然后用DBCC CHECKDB ('Hotel')看看有没有错误

如果上面还是不行,试试吧数据库设为紧急模式,应该可以看到数据了,再把数据导出到一个新的数据库。
  • 打赏
  • 举报
回复
cgsun 2003-12-13
附加數據庫
  • 打赏
  • 举报
回复
DigJim 2003-12-12
exec sp_attach_db @dbname=N'名称',
@filename1=N'e:\data\名称.mdf',
@filename2=N'e:\data\名称.ldf'

  • 打赏
  • 举报
回复
liao71 2003-12-12
他出错的错误好像是日志文件错误了。
  • 打赏
  • 举报
回复
zhengxianping 2003-12-12
新建数据库,用户,表和原来一样的,然后把原来的数据文件覆盖,注意名称都有一样用户名密码什么的都一样最好的
我已经实现了此功能!!!要不你先做一个试验!!
祝你好运呀!!1
  • 打赏
  • 举报
回复
xionglibin 2003-12-12
up,學習中....
  • 打赏
  • 举报
回复
ld2099 2003-12-12
新建一个数据库,在这个数据库名字右键/所有任务/附加数据库/选择你的数据库/ok
  • 打赏
  • 举报
回复
own8888 2003-12-12
直接就能恢复的!
  • 打赏
  • 举报
回复
liuhuijun 2003-12-12
exec sp_attach_db @dbname=N'名称',
@filename1=N'e:\data\名称.mdf',
@filename2=N'e:\data\名称.ldf'

把备份文件的路件和MDF和LDF的路径写好,执行就可以了
  • 打赏
  • 举报
回复
henry_gz 2003-12-12
把 MDF 和 LDF 附加到另一台SQL Server 試試看.

sp_attach_db
  • 打赏
  • 举报
回复
txlicenhe 2003-12-12
新建一同名数据库,再用这两个文件复盖新建的数据库文件,然后分离,附加。
  • 打赏
  • 举报
回复
相关推荐
发帖
应用实例
加入

2.7w+

社区成员

MS-SQL Server 应用实例
申请成为版主
帖子事件
创建了帖子
2003-12-12 01:10
社区公告
暂无公告