误删除mdf文件,但是ldf文件还在,如何恢复(有几天前的完整数据库备份),紧急在线等?

tcly 2003-08-21 06:34:34
误删除mdf文件,且无法恢复,但是ldf文件还在,如何恢复(有几天前的完整数据库备份),紧急在线等?
...全文
318 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
happydreamer 2003-08-22
  • 打赏
  • 举报
回复
如何在数据库文件损坏(日志文件完好)情况下,进行恢复

数据库文件损坏的时候如何恢复
1 建一个测试数据库test(数据库类型为完全)
2 建一个表,插入点记录
create table a(c1 varchar(2))
go
insert into a values('aa')
go
insert into a values('bb')
go
3 作完全备份,到文件test_1.bak
4 在作一点修改
insert into a values('cc')
go
create table b(c1 int)
go
insert into b values(1)
go
insert into b values(2)
go
5 shutdown 数据库服务器
6 用ultraedit编辑数据库文件test_data.mdf,随便修改点字节内容
7 启动数据库,并且运行企业管理器,点开数据库,看到test变成灰色,而且显示置疑。
8 运行isql -SLocalhost -Usa -P
1> backup log test TO DISK='D:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\t
est_2.bak' WITH NO_TRUNCATE
2>go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
BACKUP LOG 操作成功地处理了 2 页,花费了 0.111 秒(0.087 MB/秒)。

9 进行恢复最老的完全备份
1> RESTORE DATABASE test FROM DISK='D:\Program Files\Microsoft SQL Server\MSSQL\
BACKUP\test_1.bak' WITH NORECOVERY
2> go
已处理 96 页,这些页属于数据库 'test' 的文件 'TEST_Data'(位于文件 1 上)。
已处理 1 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE DATABASE 操作成功地处理了 97 页,花费了 0.107 秒(7.368 MB/秒)。

10 恢复最近的日志
1> RESTORE LOG test FROM DISK='D:\Program Files\Microsoft SQL Server\MSSQL\BACKU
P\test_2.bak' WITH RECOVERY
2> go
已处理 2 页,这些页属于数据库 'test' 的文件 'TEST_Log'(位于文件 1 上)。
RESTORE LOG 操作成功地处理了 2 页,花费了 0.056 秒(0.173 MB/秒)。

数据已经完全恢复了,可以使用了。
select * from a
go

select * from b
go
c1
----
aa
bb
cc




有老的备份的话

1 backup log db TO DISK='e:\db2.bak' WITH NO_TRUNCATE

2 恢复最老的完全备份
RESTORE DATABASE db FROM DISK='e:\db1.bak' WITH NORECOVERY

3 恢复最近的日志
RESTORE LOG db FROM DISK='e:\db2.bak' WITH RECOVERY















探讨一个问题:
系统中有一个数据库DB1,系统正在使用的过程中,不小心删除了某表T1的数据
现我可以按照用完整备份文件加日志备份时间点TIME1恢复的方法来恢复该数据库

但问题出在该数据库一直还必须在使用中,所以除了你删除了数据的TA表外,其它的
表的数据你不能只是恢复到错误时间点TIME1处,因为,TIME1以后也有数据变化

解决这个问题有两个方法
1:用LOG EXEPLORE 可以轻松搞定

2:先建立一个数据库DB2,将完整备份文件恢复到DB2中,再用DB2中的T1数据来更新
DB1中的T1数据即可,但在使用这种方法时候遇到了一些麻烦,请各位一起探讨一下。
(以前我测试通过了的)

RESTORE FILELISTONLY
FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'
RESTORE DATABASE db2
FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup'
WITH RECOVERY, replace,
MOVE 'db1_Data' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
MOVE 'db1_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf'

restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'

问题就出在 restore log 就必须使用 RECOVERY 来恢复DB2!!
cocose 2003-08-22
  • 打赏
  • 举报
回复
关注
xiaofhua 2003-08-21
  • 打赏
  • 举报
回复
restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'
只有日志文件LDF,没有日志备份呀.怎么办?
nboys 2003-08-21
  • 打赏
  • 举报
回复
不能用.ldf文件恢复

可以用完整备份的数据文件来恢复


--查看备份信息
RESTORE FILELISTONLY FROM DISK ='C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup\.bak文件'

--还原旧的备份
RESTORE DATABASE db2 FROM DISK = 'C:\Program Files\Microsoft SQL Server\MSSQL\BACKUP\db1_backup\.bak文件'' with replace,norecovery,
move 'db1_Data' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_data.mdf',
move 'db1_Log' to 'C:\Program Files\Microsoft SQL Server\MSSQL\data\db2_log.ldf'

其中db2_data.mdf和db2_log.ldf是要的还原数据库的位置,db1_Data和db1_Log是要还原数据库的逻辑文件名

--还原数据日志到时间点
restore log db2 from disk='db_log_backup' with stopat='2003/4/22 9:57'
xiaofhua 2003-08-21
  • 打赏
  • 举报
回复
在恢复其他数据库时不小心覆盖了另一个数据库,但是由于日志文件路径不同,而没有被覆盖.
现在只有LDF文件和几天前的备份.还有方法恢复吗?(紧急!)
hjb111 2003-08-21
  • 打赏
  • 举报
回复
用RecoverNT先把.mdf,.ldf文件找回来
下载:
http://www.onlinedown.net/recovernt98.htm

RecoverNT是一个32位的反删除及文件修复软件,它兼容所有的FAT文件系统(包括FAT32和NTFS),能在Windows 98/NT/2000图形界面下直接恢复被误删的文件及文件系统被损坏的磁盘。由于RecoverNT是采用搜索整个磁盘的数据区来达到恢复数据的目的,因此它甚至还能修复文件系统完全损坏的磁盘,这就极大地 增强了用户数据的安全性。

现在我们就以某用户在Windows中误删了C盘的COMMAND.COM文件为例,将利用RecoverNT恢复误删文件的步骤介绍如下:

1.启动RecoverNT。

2.单击快捷工具栏上的“Open”按钮,打开“Select Drive”窗口(如图5-1所示)。

3.从“Drive”列表中选择需要恢复文件所在磁盘(C盘)。

4.根据需要选择是否搜索整个磁盘的数据区(“Search Disk”选项),当我们需要从被误删的磁盘中恢复文件时无须选择该选项,而当用户需要从文件系统被破坏的磁盘中恢复文件时则应选择该选项。

5.单击“Select”按钮,RecoverNT就会对指定磁盘的内容进行扫描,并将磁盘内容显示出来(如图5-2所示),我们可从中了解磁盘文件的文件名、日期、起始扇区位置、文件尺寸、文件属性等信息。除正常文件及目录之外,RecoverNT还会将已被删除的文件及目录也显示出来,并将其首字母显示为#(如C盘的被删除的COMMAND.COM文件显示为#OMMAND.COM)。

6.选择被删除的文件。

7.按下F2或执行RecoverNT“File”菜单的“Rename”命令,将#OMMAND.COM文件更名为COMMAND.COM。

8.选择更名后的COMMAND.COM文件。

9.单击RecoverNT快捷工具栏上的“Save”按钮。

10.在弹出的“Save”对话框中指定保存该文件的路径(注意,RecoverNT不能将该文件恢复到源磁盘的同一个目录中,以防因恢复不彻底而对数据造成的进一步破坏)。

11.单击“OK”按钮,RecoverNT就会将C盘被误删的COMMAND.COM文件恢复到用户指定的目录中,从而达到了恢复文件的目的。

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧