将SQL2000数据库还原到前一个状态

有时要将数据库还原到更早的即时点。例如,如果数据库内的某个早期事务错误地更改了某些数据,则需将数据库还原到早于错误数据输入时间的即时点。为此,需将整个数据库恢复到事务日志内的某个点。可以将数据库恢复到事务日志内的特定即时点,或恢复到以前插入到日志中的某个命名标记。
 
还原到故障点 (Transact-SQL)
还原到故障点
  1. 执行使用 NO_TRUNCATE 子句的 BACKUP LOG 语句以备份当前活动的事务日志。

  2. 执行使用 NORECOVERY 子句的 RESTORE DATABASE 语句以还原数据库备份。

  3. 执行使用 NORECOVERY 子句的 RESTORE LOG 语句以应用每个事务日志备份。

  4. 执行使用 RECOVERY 子句的 RESTORE LOG 语句以应用步骤 1 中创建的事务日志备份。
    示例
    下例备份 MyNwind 数据库的当前活动事务日志(即使 MyNwind 不可访问),然后使用以前创建的备份将数据库还原到故障点:
-- Back up the currently active transaction log.
BACKUP LOG MyNwind
   TO MyNwind_log2
   WITH NO_TRUNCATE
GO
-- Restore the database backup.
RESTORE DATABASE MyNwind
   FROM MyNwind_1
   WITH NORECOVERY
GO
-- Restore the first transaction log backup.
RESTORE LOG MyNwind
   FROM MyNwind_log1
   WITH NORECOVERY
GO
-- Restore the final transaction log backup.
RESTORE LOG MyNwind
   FROM MyNwind_log2
   WITH RECOVERY
GO
 
恢复到即时点
可以通过只恢复在事务日志备份内的特定即时点之前发生的事务来恢复到即时点,而不用恢复整个备份。通过查看每个事务日志备份的标题信息或 msdb 中 backupset 表内的信息,可以快速识别哪个备份包含要将数据库还原到的即时点。然后只需将事务日志备份应用到该点。
不能跳过特定的事务。因为这将危及数据库内的数据完整性。在要撤消的事务之后发生的事务可能取决于该撤消事务所修改的数据。
如果不想还原特定的即时点之后对数据库所做的任何修改,则:
不恢复数据库而还原最后一次数据库备份。

按照与创建事务日志备份时相同的顺序应用每个事务日志备份。

在事务日志备份内的期望的即时点处恢复数据库。
如果在某个即时点之后创建的某些事务日志备份丢失或损坏,也可用该进程还原数据库和事务日志。
还原到某个即时点
Transact-SQL

如何还原到某个即时点 (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

 
 

你可能感兴趣的:(数据库,职场,休闲)