CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  疑难问题

求助:数据库日志恢复时出错。

楼主duola1(朵啦)2003-09-03 23:51:43 在 MS-SQL Server / 疑难问题 提问

数据库及日志的备份、恢复程序代码如下:  
  with   adoquery1   do  
  begin  
      //备份数据库  
      close;  
      sql.clear;  
      sql.Add('backup   database   aa   to   disk=''c:\aa.bak''   with   init');  
      prepared;  
      execsql;  
      //备份日志  
      close;  
      sql.clear;  
      sql.Add('backup   log   aa   to   disk=''c:\aa.dat''   with   init,no_truncate');  
      prepared;  
      execsql;  
  end;  
  with   adoquery1   do  
  begin  
      //恢复数据库  
      close;  
      sql.Clear;  
      sql.Add('use   master');  
      prepared;  
      execsql;  
      close;  
      sql.Clear;  
      sql.Add('restore   database   aa   from   disk=''c:\aa.bak''   with   replace');  
      prepared;  
      execsql;  
      close;  
      sql.Clear;  
      sql.Add('use   aa');  
      prepared;  
      execsql;  
      //恢复日志  
      close;  
      sql.Clear;  
      sql.Add('use   master');  
      prepared;  
      execsql;  
      close;  
      sql.Clear;  
      sql.Add('restore   log   aa   from   disk=''c:\aa.dat''');  
      prepared;  
      execsql;  
      close;  
      sql.Clear;  
      sql.Add('use   aa');  
      prepared;  
      execsql;  
  end;  
  程序运行到“恢复日志”部分时出错,出错提示:“先前的还原操作未指定WITH   NORECOVERY或WITH   STANDBY。请在除最后步骤之外的所有其它步骤中指定WITH   NORECOVERY或WITH   STANDBY后,重新启动该还原序列。”  
  请教专家:程序应如何修改才能成功恢复日志?盼复,万分感激! 问题点数:50、回复次数:7Top

1 楼pengdali()回复于 2003-09-03 23:55:12 得分 10

restore   database   aa   from   disk='c:\aa.bak'   WITH   NORECOVERYTop

2 楼txlicenhe(马可)回复于 2003-09-04 08:06:54 得分 10

restore   database   aa   from   disk='c:\aa.bak'   WITH   NORECOVERY  
  or  
  restore   database   aa   from   disk='c:\aa.bak'   WITH   STANDBY  
  Top

3 楼zarge(鲨去来兮)回复于 2003-09-04 08:33:54 得分 20

restore   log和restore   database要对应使用  
   
  如果  
  restore   database   aa   from   disk='c:\aa.bak'   WITH   NORECOVERY  
  就要用  
  restore   log   aa   from   disk='c:\aa.dat'   WITH   NORECOVERY  
   
  如果  
  restore   database   aa   from   disk='c:\aa.bak'   WITH   STANDBY   =   UNDO_FILE_NAME  
  就要用  
  restore   log   aa   from   disk='c:\aa.dat'   WITH   STANDBY   =   UNDO_FILE_NAME  
   
  最后再执行  
  restore   log   aa   WITH   Recovery  
  数据库才可以使用  
   
   
  如果  
  restore   database   aa   from   disk='c:\aa.bak'   WITH   Replace  
  就不能再恢复日志备份了  
  Top

4 楼duola1(朵啦)回复于 2003-09-04 08:57:41 得分 0

请教楼上高手们:  
        "如果restore   database   aa   from   disk='c:\aa.bak'   WITH   Replace就不能再恢复日志备份了",那么这条语句除了恢复数据库外,对日志文件有什么影响吗?  
   
  Top

5 楼duola1(朵啦)回复于 2003-09-04 17:15:04 得分 0

UPTop

6 楼duola1(朵啦)回复于 2003-09-04 21:28:52 得分 0

UPTop

7 楼zarge(鲨去来兮)回复于 2003-09-04 22:07:31 得分 10

"如果restore   database   aa   from   disk='c:\aa.bak'   WITH   Replace就不能再恢复日志备份了",那么这条语句除了恢复数据库外,对日志文件有什么影响吗?  
   
  联机丛书:  
   
  NORECOVERY  
   
  指示还原操作不回滚任何未提交的事务。如果需要应用另一个事务日志,则必须指定   NORECOVERY   或   STANDBY   选项。如果   NORECOVERY、RECOVERY   和   STANDBY   均未指定,则默认为   RECOVERY。  
   
  当还原数据库备份和多个事务日志时,或在需要多个   RESTORE   语句时(例如在完整数据库备份后进行差异数据库备份),SQL   Server   要求在除最后的   RESTORE   语句外的所有其它语句上使用   WITH   NORECOVERY   选项。  
   
   
   
  说明     如果指定   NORECOVERY   选项,数据库将处于这个中间的未恢复状态而不可用。  
   
   
  当用于文件或文件组还原操作时,NORECOVERY   强制数据库在还原操作结束后保持还原状态。这在以下情况中很有用:    
   
  还原脚本正在运行并且始终要应用日志。  
   
   
  使用文件还原序列,并且在两次还原操作之间不能使用数据库。    
  RECOVERY  
   
  指示还原操作回滚任何未提交的事务。在恢复进程后即可随时使用数据库。  
   
  如果安排了后续   RESTORE   操作(RESTORE   LOG   或从差异数据库备份   RESTORE   DATABASE),则应改为指定   NORECOVERY   或   STANDBY。  
   
  如果   NORECOVERY、RECOVERY   和   STANDBY   均未指定,则默认为   RECOVERY。当从   SQL   Server   早期版本中还原备份集时,可能要求将数据库升级。如果指定了   WITH   RECOVERY,升级将自动进行。有关更多信息,请参见事务日志备份。  
   
  STANDBY   =   undo_file_name  
   
  指定撤消文件名以便可以取消恢复效果。撤消文件的大小取决于因未提交的事务所导致的撤消操作量。如果   NORECOVERY、RECOVERY   和   STANDBY   均未指定,则默认为   RECOVERY。  
   
  STANDBY   允许将数据库设定为在事务日志还原期间只能读取,并且可用于备用服务器情形,或用于需要在日志还原操作之间检查数据库的特殊恢复情形。  
   
  如果指定的撤消文件名不存在,SQL   Server   将创建该文件。如果该文件已存在,则   SQL   Server   将重写它。  
   
  Top

相关问题

  • 附加数据库出错,日志不全,怎么恢复?急!!
  • 数据库恢复出错?急
  • 数据库恢复时出错
  • 没有日志怎么恢复数据库呢?
  • 缺少日志的数据库怎么恢复?
  • 如何用日志文件恢复数据库?
  • 还原数据时报"处理数据库''的日志时出错",怎办?
  • 用RESTORE DATABASE 语句恢复数据库时出错
  • 数据库恢复出错,大家帮我看看
  • 数据库出错

关键词

  • 数据库
  • 语句
  • 文件
  • database
  • 选项
  • 日志
  • norecovery
  • 还原
  • aa
  • 备份

得分解答快速导航

  • 帖主:duola1
  • pengdali
  • txlicenhe
  • zarge
  • zarge

相关链接

  • SQL Server类图书

广告也精彩

反馈

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