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

急:在恢复数据时出现的问题

楼主liounzhou(潇潇夜雨)2004-12-03 11:59:33 在 MS-SQL Server / 基础类 提问

小弟误操作,删除了一部分数据.在网上找到用日志恢复的方法,  
  RESTORE   DATABASE   message   from   disk='D:\message.bak'   WITH   NORECOVERY  
  RESTORE   LOG   message  
                  FROM   disk='D:\20041203.logs'   WITH   RECOVERY,STOPAT='12/03/2004   01:00'  
  但是在实际使用的时候出现了错误:因为数据库正在使用,所以未能获得对数据库的排它访问权。  
  请问是怎么回事啊?我已经在企业管理器中删除了所有message库的进程了.  
  上面两句SQL是在查询分析器中执行的. 问题点数:0、回复次数:5Top

1 楼yelook(香槟酒)回复于 2004-12-03 12:08:28 得分 0

能这样还原吗,表示怀疑Top

2 楼liounzhou(潇潇夜雨)回复于 2004-12-03 12:56:51 得分 0

当然可以了.  
  原文如下:  
  DB2中可以使得数据库回复到指定的时间点,SQL   Server数据库的Recovery   Model为full   或者Bulk   copy的时候,是可以从日志来恢复数据库的。实际上日志中记录的一条一条的transact   sql语句,恢复数据库的时候会redo这些sql语句。  
       
  前提条件:myBBS是数据库test中的一个表,  
   
                      数据库test的Recovery   Model为Full,Auto   Close,Auto   Shrink两个选项未选中。  
   
                      数据库test的data   files和log   files均为默认的自动增长状态。  
   
   
   
  A:2004/10/13,16:00进行数据库备份,backup   database   test   to   disk='d:\db\1600.bak'   with   init  
   
  B:2004/10/14,13:00对数据库进行了update,delete等操作;  
   
  C:2004/10/15,18:00使用delete   mybbs   where   id>300时,语句误写成delete   mybbs,因而删除了表mybbs中的所有数据。  
  现在在C点,C点对数据库进行了误操作,我们希望数据库能够恢复到C之前的状态,比如恢复到10月15日17:59分的状态。  
   
  要恢复数据库B点,使用的是A点备分的数据库1600.bak;而使用的日志备分是最新的备分1820.logs;因而进行如下操作:  
  --备分日志:  
   
  BACKUP   LOG   test   TO   DISK='d:\1820.logs'   WITH   INIT  
  --恢复数据库1600.bak,使用WITH   NORECOVERY参数:  
   
  RESTORE   DATABASE   test   from   disk='d:\db\1640.bak'   WITH   NORECOVERY  
  --使用日志恢复数据库到10月15日17:59分:  
   
  RESTORE   LOG   test  
                  FROM   disk='d:\1820.logs'   WITH   RECOVERY,STOPAT='10/15/2004   17:59'  
   
  上面的三条Transact   SQL语句的对应过程:  
   
              1.恢复数据库到A点;  
   
              2.执行A-B之间的log记录,把数据库恢复到B点.  
   
                这样就恢复数据库到了指定的时间点。如果恢复不成功,可能的原因是:1.未使用正确的备分数据库;2.数据库选项选中了Auto   Shrink.  
   
     
  Top

3 楼yelook(香槟酒)回复于 2004-12-03 13:05:52 得分 0

据我所知,sqlserver是还原数据库时选择同一数据库不同时间的日志来还原的,当然有前提得定时备份事务日志,DB2的这种功能sqlserver好像没法做到Top

4 楼liounzhou(潇潇夜雨)回复于 2004-12-03 14:22:00 得分 0

先不管是否能恢复,现在执行这两句语句就出错啊Top

5 楼yosonlin()回复于 2004-12-03 14:28:22 得分 0

用指定时间来还原,首先是你在在这个时刻做过备份,然后才可以恢复.  
  我觉得用语句还不如用企业管理器,用语句可做的也许它都可以做Top

相关问题

  • 急!数据恢复
  • 数据恢复,急,急
  • 急!!恢复数据库
  • 紧急--数据库恢复????
  • 数据恢复!!!特急!!!
  • 数据库恢复~~急
  • 急救 数据恢复
  • 恢复数据库出现问题。
  • 恢复数据库时出现错误
  • 急!急!急!数据库恢复

关键词

  • 数据库
  • 语句
  • 数据
  • 执行
  • database
  • db
  • sql
  • 恢复
  • 日志
  • mybbs

得分解答快速导航

  • 帖主:liounzhou

相关链接

  • SQL Server类图书

广告也精彩

反馈

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