CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
不看会后悔的Windows XP之经验谈 简单快捷DIY实用家庭影院
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

紧急求助:如何恢复此数据库?(十万火急!!!)

楼主pbsql(风云)2002-03-11 17:44:03 在 MS-SQL Server / 基础类 提问

程序中用backup命令备份的SQL数据库,现在在Enterprise   Manager中作恢复时报如下错误(以前恢复时正常),请问怎么解决?  
  The   preceding   restore   operation   did   not   specify   WITH   NORECOVERY   or   WITH   STANDBY.   Restart   the   restore   sequence,   specifying   WITH   NORECOVERY   or   WITH   STANDBY   for   all   but   final   step.  
  问题点数:100、回复次数:28Top

1 楼pbsql(风云)回复于 2002-03-11 18:07:27 得分 0

在线等候!UPTop

2 楼Eric2000(消灭小日本)回复于 2002-03-11 18:13:13 得分 0

SqlServer   几?  
  Top

3 楼zhanwei(@_@,初学.Net)回复于 2002-03-11 18:13:13 得分 0

GZTop

4 楼nana11(汉堡)回复于 2002-03-11 18:13:33 得分 0

restore   加上参数WITH   NORECOVERY   or   WITH   STANDBYTop

5 楼pbsql(风云)回复于 2002-03-11 18:17:50 得分 0

SqlServer   7.0  
  restore   加上参数WITH   NORECOVERY   or   WITH   STANDBY,我是在Enterprise   Manager中作恢复操作,选什么?Top

6 楼pbsql(风云)回复于 2002-03-11 18:29:43 得分 0

执行命令:restore   database   ssnet   from   disk='E:\public\ss\ssnet.bak'   WITH   norecovery报同样的错:  
  Server:   Msg   4306,   Level   16,   State   1,   Line   1  
  The   preceding   restore   operation   did   not   specify   WITH   NORECOVERY   or   WITH   STANDBY.   Restart   the   restore   sequence,   specifying   WITH   NORECOVERY   or   WITH   STANDBY   for   all   but   the   final   step.  
  Server:   Msg   3013,   Level   16,   State   1,   Line   1  
  Backup   or   restore   operation   terminating   abnormally.  
  Top

7 楼ldy(罗大佑)回复于 2002-03-11 19:00:01 得分 80

看的帮助:  
  拷贝过来,看是否有帮助:  
  如何还原差异数据库备份   (Transact-SQL)  
  还原差异数据库备份    
   
  执行   RESTORE   DATABASE   语句,同时指定   NORECOVERY   子句,以还原差异数据库备份之前的数据库备份。有关更多信息,请参阅如何还原数据库备份。  
   
   
  执行   RESTORE   DATABASE   语句以还原差异数据库备份,同时指定:    
  差异数据库备份将应用到的数据库的名称。  
   
   
  要从其中还原差异数据库备份的备份设备。  
   
   
  NORECOVERY   子句,前提是在还原差异数据库备份后,还要应用事务日志备份,否则应指定   RECOVERY   子句。    
  示例  
  A.   还原数据库和差异数据库备份  
  下例还原   MyNwind   数据库的数据库和差异数据库备份。  
   
  --   Assume   the   database   is   lost   at   this   point.   Now   restore   the   full    
  --   database.   Specify   the   original   full   backup   and   NORECOVERY.  
  --   NORECOVERY   allows   subsequent   restore   operations   to   proceed.  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   NORECOVERY  
  GO  
  --   Now   restore   the   differential   database   backup,   the   second   backup   on    
  --   the   MyNwind_1   backup   device.  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   FILE   =   2,  
              RECOVERY  
  GO  
   
  B.   还原数据库、差异数据库以及事务日志备份  
  下例还原   MyNwind   数据库的数据库、差异数据库和事务日志备份。  
   
  --   Assume   the   database   is   lost   at   this   point.   Now   restore   the   full    
  --   database.   Specify   the   original   full   backup   and   NORECOVERY.  
  --   NORECOVERY   allows   subsequent   restore   operations   to   proceed.  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   NORECOVERY  
  GO  
  --   Now   restore   the   differential   database   backup,   the   second   backup   on    
  --   the   MyNwind_1   backup   device.  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1  
        WITH   FILE   =   2,  
              NORECOVERY  
  GO  
  --   Now   restore   each   transaction   log   backup   created   after  
  --   the   differential   database   backup.  
  RESTORE   LOG   MyNwind  
        FROM   MyNwind_log1  
        WITH   NORECOVERY  
  GO  
  RESTORE   LOG   MyNwind  
        FROM   MyNwind_log2  
        WITH   RECOVERY  
  GO  
   
   
   
  如何建立、维护以及联机备用服务器   (Transact-SQL)  
  备用服务器的建立通常包括在主服务器上创建数据库备份和定期事务日志备份,然后按照顺序将这些备份应用到备用服务器。在还原操作之间,备用服务器保持只读状态。当需要使用备用服务器时,任何未完成的事务日志备份,包括来自主服务器的活动事务日志备份都将应用到备用服务器中,同时还要恢复数据库。  
   
  在主服务器上创建备份    
   
  执行   BACKUP   DATABASE   语句以创建数据库备份。  
   
   
  执行   BACKUP   LOG   语句以创建事务日志备份。  
   
   
  为每个希望随着时间的变化而创建的事务日志重复步骤   2。    
  建立和维护备用服务器    
   
  执行使用   STANDBY   子句的   RESTORE   DATABASE   语句以便还原步骤   1   中在主服务器上创建的数据库备份。在回滚未提交事务影响的数据页之前,指定包含这些数据页内容的撤消文件名称。  
   
   
  执行使用   STANDBY   子句的   RESTORE   LOG   语句以便应用步骤   2   中在主服务器上创建的每个事务日志。  
   
   
  为每个在主服务器上创建的事务日志重复步骤   2。    
  使备用服务器联机(主服务器发生故障)    
   
  执行使用   NO_TRUNCATE   子句的   BACKUP   LOG   语句以备份当前活动的事务日志。当备用服务器联机时,这是将应用到备用服务器的最新事务日志备份。有关更多信息,请参阅如何创建当前活动事务日志的备份。  
   
   
  执行使用   STANDBY   子句的   RESTORE   LOG   语句以便应用所有事务日志备份,包括步骤   1   中创建的仍未应用到备用服务器的活动事务日志备份。  
   
   
  执行   RESTORE   DATABASE   WITH   RECOVERY   语句以恢复数据库并使备用服务器联机。    
  示例  
  下例在备用服务器上安装   MyNwind   数据库。在还原操作之间,可以只读模式使用数据库。  
   
  --   Restore   the   initial   database   backup   on   the   standby   server.  
  USE   master  
  GO  
  RESTORE   DATABASE   MyNwind  
        FROM   MyNwind_1    
        WITH   STANDBY   =   'c:\undo.ldf'  
  GO  
  --   Apply   the   first   transaction   log   backup.  
  RESTORE   LOG   MyNwind  
        FROM   MyNwind_log1  
        WITH   STANDBY   =   'c:\undo.ldf'  
  GO  
  --   Apply   the   next   transaction   log   backup.  
  RESTORE   LOG   MyNwind  
        FROM   MyNwind_log2  
        WITH   STANDBY   =   'c:\undo.ldf'  
  GO  
  --   Repeat   for   each   transaction   log   backup   created   on   the    
  --   primary   server.  
  --  
  --   Time   elapses..   ..   ..  
  --  
  --   The   primary   server   has   failed.   Back   up   the    
  --   active   transaction   log   on   the   primary   server.  
  BACKUP   LOG   MyNwind  
        TO   MyNwind_log3  
        WITH   NO_TRUNCATE  
  GO  
  --   Apply   the   final   (active)   transaction   log   backup  
  --   to   the   standby   server.   All   preceding   transaction  
  --   log   backups   must   have   been   already   applied.  
  RESTORE   LOG   MyNwind  
        FROM   MyNwind_log3  
        WITH   STANDBY   =   'c:\undo.ldf'  
  GO  
  --   Recover   the   database   on   the   standby   server,    
  --   making   it   available   for   normal   operations.  
  RESTORE   DATABASE   MyNwind  
        WITH   RECOVERY  
  GO  
   
  Top

8 楼pbsql(风云)回复于 2002-03-12 09:17:27 得分 0

ldy(罗大佑):谢谢!  
   
  现在是这样的,可以肯定以上问题是由差异备份引起的,可我现在手头只有ssnet.bak这个备份文件,怎么把它恢复?  
   
  执行命令:restore   database   ssnet   from   disk='E:\public\ss\ssnet.bak'   WITH   norecovery后报错:    
  Server:   Msg   4306,   Level   16,   State   1,   Line   1    
  The   preceding   restore   operation   did   not   specify   WITH   NORECOVERY   or   WITH   STANDBY.   Restart   the   restore   sequence,   specifying   WITH   NORECOVERY   or   WITH   STANDBY   for   all   but   the   final   step.    
  Server:   Msg   3013,   Level   16,   State   1,   Line   1    
  Backup   or   restore   operation   terminating   abnormally.    
   
  怎么解决?  
  高手快来,很急,谢谢!Top

9 楼pbsql(风云)回复于 2002-03-12 10:21:05 得分 0

程序中完全备份的语句如下:(sle_1.text为备份文件名)(程序第一次用完全备份备份数据库,以后就用差异备份)  
  ls_sql="backup   database   ssnet   to   disk='"+sle_1.text+"'   with   format,init,skip,nounload,stats=10"  
  execute   immediate   :ls_sql   using   ltr_trans;  
  差异备份的语句如下:  
  ls_sql="backup   database   ssnet   to   disk='"+ls_filename+"'   with   differential,format,init,skip,nounload,stats=10"  
  execute   immediate   :ls_sql   using   ltr_trans;  
   
  因为有多个客户端在运行这个程序,参数有错吗?  
  把这个备份的文件拷贝到其它机器(另外的服务器)能恢复这个数据库吗?Top

10 楼pbsql(风云)回复于 2002-03-14 18:32:24 得分 0

看看是什么东西,帖子的行距怎么突然变大了?CSDN的BUG?  
   
  大家帮帮忙,UPTop

11 楼ldy(罗大佑)回复于 2002-03-14 20:49:40 得分 0

帮你UP  
  Good   Good   Study  
  Day   Day   Up!Top

12 楼fzymr(风中游牧人)回复于 2002-03-14 21:29:17 得分 0

同病相怜,不过我是oracleTop

13 楼xjbs(大鱼)回复于 2002-03-14 21:33:30 得分 0

upupupupupTop

14 楼wonder01(一可)回复于 2002-03-15 08:55:59 得分 0

朋友  
  第一你要恢复一个已经存在的数据库时一定要选择强制覆盖  
  第二如果你是在单独恢复一个差异备份的数据库,一定要在一个等待还原状态的数据库基础上。  
  如果不能解决,我的email为:wonder@powerise.com.cnTop

15 楼pbsql(风云)回复于 2002-03-15 09:56:43 得分 0

wonder01(一可)   :  
  第一,强制覆盖当然选择了  
  第二,一定要在一个等待还原状态的数据库基础上是什么意思?是不是要建一个空的数据库,也建了呀,没问题  
   
  还是恢复不成Top

16 楼yinpengxiang(鸿翔)回复于 2002-03-15 12:08:19 得分 0

查查你的SQL   SERVER字符集相同么?Top

17 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2002-03-15 12:36:51 得分 10

我帮你问过竹之草了,他说恐怕不能恢复了!Top

18 楼pbsql(风云)回复于 2002-03-15 12:57:37 得分 0

yinpengxiang(鸿翔):与字符集有关么?原来完全备份的文件拿过来就可以直接恢复的  
  killerdanny(danny@转职中...月夜惊心):是什么原因不能恢复了?Top

19 楼killerdanny(堕落的瓦拉斯塔兹)回复于 2002-03-15 13:17:31 得分 0

你把帖转到数据库中,让他们看看!Top

20 楼pbsql(风云)回复于 2002-03-15 13:38:15 得分 0

zhuzhichao及各位弟兄,帮帮忙了Top

21 楼liujianjun_(流星尔)回复于 2002-03-15 15:44:39 得分 0

我看用完全备份强制覆盖吧,总比没有强。Top

22 楼pbsql(风云)回复于 2002-03-19 11:09:40 得分 0

没辙了吗?再等等看Top

23 楼LiaoCheng(光辉岁月>>www.vod-online.net)回复于 2002-03-19 12:00:41 得分 0

拿到其它的机器上测试一下,是不是你的备份文件有问题  
  或是其它原因Top

24 楼pbsql(风云)回复于 2002-03-19 13:12:47 得分 0

备份文件没有问题(文件是好的),备份时也没有报错,拿到其它的机器上就是不能恢复Top

25 楼neutretto(立青)回复于 2002-03-19 14:23:42 得分 0

最好检查你的日志文件  
  看看你的备份顺序  
  Top

26 楼pbsql(风云)回复于 2002-03-19 18:25:10 得分 0

我就这一个备份文件Top

27 楼Haiwer(海阔天空)回复于 2002-03-20 09:17:04 得分 10

说说差异备份和还原的问题,在差异备份前应该有一次完全备份,也就是你上面所说的sle_1.text指定的文件名,只有能找到这个备份文件才能还原。  
  还原应该先恢复完全备份,再恢复差异备份,再恢复日志备份。  
   
  找不到完全备份文件就如zguzhicao说的不能恢复。  
   
  提个建议:  
  以后,完全备份也要定时,比如一星期一次,并保存好;增加日志备份。  
   
  Top

28 楼pbsql(风云)回复于 2002-03-20 10:48:59 得分 0

看来只能吸取教训了Top

相关问题

  • 紧急--数据库恢复????
  • 十万火急!大虾救命:数据库没有备份,请问怎样恢复成前两天的数据?
  • 怎样通过日志文件恢复数据库?急,十万火急,各位拜托了!
  • 怎样通过日志文件恢复数据库?急,十万火急,各位拜托了!
  • 十万火急,数据库起不来
  • 十万火急:关于ACCESS2000数据库
  • 紧急求助数据库恢复
  • 紧急求救:ORACLE数据库恢复...............
  • 紧急求助,数据库恢复
  • 十万火急!加密的数据库忘了密码!!!

关键词

  • 数据库
  • 服务器
  • 语句
  • 执行
  • 文件
  • database
  • 联机
  • 应用
  • 备份
  • mynwind

得分解答快速导航

  • 帖主:pbsql
  • ldy
  • killerdanny
  • Haiwer

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo