下例将数据库还原到它在 1998 年 7 月 1 日上午 10:00 点的状态,并且举例说明涉及多个日志以及多个备份设备的还原操作。-- Restore the database backup.
RESTORE DATABASE MyNwind
   FROM MyNwind_1, MyNwind_2
   WITH NORECOVERY
GO
RESTORE LOG MyNwind
   FROM MyNwind_log1
   WITH RECOVERY, STOPAT = 'Jul 1, 1998 10:00 AM'
GO
RESTORE LOG MyNwind
   FROM MyNwind_log2
   WITH RECOVERY, STOPAT = 'Jul 1, 1998 10:00 AM'
GO

解决方案 »

  1.   

    如何还原到某个即时点 (Transact-SQL)
    还原到某个即时点 执行使用 NORECOVERY 子句的 RESTORE DATABASE 语句。
    执行 RESTORE LOG 语句以应用每个事务日志备份,同时指定: 
    事务日志将应用到的数据库的名称。
    要从其中还原事务日志备份的备份设备。
    RECOVERY 和 STOPAT 子句。如果事务日志备份不包含要求的时间(例如,如果指定的时间超出了事务日志所包含的时间范围),则会生成警告,并且数据库将保持未恢复的状态。 
    示例
    下例将数据库还原到它在 1998 年 7 月 1 日上午 10:00 点的状态,并且举例说明涉及多个日志以及多个备份设备的还原操作。-- Restore the database backup.
    RESTORE DATABASE MyNwind
       FROM MyNwind_1, MyNwind_2
       WITH NORECOVERY
    GO
    RESTORE LOG MyNwind
       FROM MyNwind_log1
       WITH RECOVERY, STOPAT = 'Jul 1, 1998 10:00 AM'
    GO
    RESTORE LOG MyNwind
       FROM MyNwind_log2
       WITH RECOVERY, STOPAT = 'Jul 1, 1998 10:00 AM'
    GO
      

  2.   

    系统中有一个数据库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 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' --还原数据日志到时间点
    restore log  db2  from disk='db_log_backup'  with stopat='2003/4/22 9:57'
      

  3.   

    可我就是不能确定stopat后的准确日期啊,如果我'2003/4/22 6:00'备份了一,'2003/4/22 8:00'备份了一次,我要是写stopat='2003/4/22 7:00'那还原的是什么时候的?