关于数据库恢复问题

jiangag 2001-01-05 01:39:00
由于没有及时备份数据,怎样恢复未备份的数据,听说利用日志文件可恢复,是否可以,怎样恢复(MSSQLSERVER数据库)
...全文
230 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiangag 2001-01-15
  • 打赏
  • 举报
回复
各位老兄:你们越说我越糊涂。
我的数据库是在Enterprise Manager中利用backup database进行备份的,所以在指定的目录下有指定的备份文件例如:"c:\mssql\backup\test" ,所以只有一个数据库备份文件"test",通过它(test)我可以将数据库被破坏以前的数据库恢复(包括被drop的表),然后是该怎样把未来得及备份的数据恢复.我这样的备份方法是否有日志备份存在?如果有,在哪里?是什么?
如果没有的话,有没有办法恢复数据库?
请问正确的备份数据库及恢复是怎样的?都包括什么?
谢谢!

flyfk961 2001-01-14
  • 打赏
  • 举报
回复
1.首先数据库要处在archivelog模式下
2.要有你丢失的表所在表空间的对应的所有数据文件的物理备份,不是通过export出来的*.dmp文件
如果你没有以上两个必要条件,那我就无能为力了
下面开始操作步骤:(这里暂定丢失表的空间为fk_data)
1.svrmgr>alter tablespace fk_data offline;
也可用 alter tablespace fk_data offline for recover;
2.svrmgr>host del 文件(表空间对应的文件)
3.svrmgr>host copy source(备份文件,包括路径)dest(数据文件所在位置)
如表空间对应有三个数据文件,则执行三次host copy.
4.svrmgr>recover tablespace fk_data until cancel;(基于终止)
svrmgr>recover tablespace fk_data until time;(基于时间)
因为你以外drop了一张表,所以必须控制恢复程度。通过控制恢复至drop table之前的状态。
5.svrmgr>alter tablespace fk_data online;
(注:此方式可以在数据库打开是进行,也可以在startup mount之后进行,其中,在startup mount之后进行,当要打开数据库时,用alter database open resetlogs;
GoldenLion 2001-01-13
  • 打赏
  • 举报
回复
wwl007方法是正确的.
'c:\mssql7\backup\back_l.dat' 只不过是log backup的文件名你可以起任意名字如abc.de.
SQL Books Online里有很详尽的解释.backup and restore是很基本的SQL管理技能一定要学会的.
jiangag 2001-01-10
  • 打赏
  • 举报
回复
ok!如果是这样的话,那么wwl007兄的方案“'c:\mssql7\backup\back_l.dat'”的文件的
扩展名是 '.dat',它是什么东东?
漫步晨光L 2001-01-09
  • 打赏
  • 举报
回复
日志文件是'c:\mssql7\data\test_Log.LDF'

"日志备份"是动作,你的备份日志的操作
日志文件是后缀为ldf的文件,是你备份后纪录数据库操作的纪录文件。
jiangag 2001-01-09
  • 打赏
  • 举报
回复
请问wwl007:日志备份是否是'c:\mssql7\data\test_Log.LDF',如果不是,该怎么办?
我的数据库备份是complete备份,日志备份到底是什么?同日志文件有什么不同?
wwl007 2001-01-09
  • 打赏
  • 举报
回复
你是不是对什么都不了解啊!
数据库备份本来就分这个问题吗?
快乐猪说的就对!
wwl007 2001-01-08
  • 打赏
  • 举报
回复
要看清楚了再做
你的问题仅仅需要下面两步
EXEC sp_addumpdevice 'disk', 'back_l', 'c:\mssql7\backup\back_l.dat'

/*备份日志文件*/
backup log mybase to back_l
/*解数据库备份*/
restore database mybase from back_d with NORECOVERY,REPLACE
/*解日志备份*/
restore log mybase from back_l
WITH RECOVERY,STOPAT = 'nov 30, 2000 15:06 PM'
wwl007 2001-01-08
  • 打赏
  • 举报
回复
可以!
这能够解决从最近一次备份到现在为止对数据库的更改。
步骤:
1. 备份日志。
2. 解备份数据库(要加上with norecovery)
3. 解备份日志(要加上时间)
例如:
/*创建备份驱动*/
exec sp_dropdevice 'back_d'
exec sp_dropdevice 'back_l'
EXEC sp_addumpdevice 'disk', 'back_d', 'c:\mssql7\backup\back_d.dat'
EXEC sp_addumpdevice 'disk', 'back_l', 'c:\mssql7\backup\back_l.dat'
/*设置选项*/
exec sp_dboption 'mybase','trunc. log on chkpt.','false'
/*备份数据库*/
backup database mybase to back_d
/*备份日志文件*/
backup log mybase to back_l
/*解数据库备份*/
restore database mybase from back_d with NORECOVERY,REPLACE
/*解日志备份*/
restore log mybase from back_l
WITH RECOVERY,STOPAT = 'nov 30, 2000 15:06 PM'
jiangag 2001-01-08
  • 打赏
  • 举报
回复
我的数据库是每周备份一次(星期日22:00),但是有一次在星期六的下午数据库的一个表
被意外drop,所以丢失了近六天的数据,没有数据备份,只有日志备份,该怎样恢复?
wwwunix 2001-01-06
  • 打赏
  • 举报
回复
日志只能恢复上次备份以来的操作,你的原始数据怎样恢复?
你能否说说你的故障的详细情况?或许我能帮你想想办法。
yangzi 2001-01-05
  • 打赏
  • 举报
回复
呵呵,你惨了,可以日志备份来恢复,好象不能用日志文件本身来执行恢复操作。
所以,很难。

34,587

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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