ITPub博客

首页 > Linux操作系统 > Linux操作系统 > 完整恢复模式下执行数据库完整还原

完整恢复模式下执行数据库完整还原

原创 Linux操作系统 作者:iSQlServer 时间:2009-01-19 15:40:48 0 删除 编辑

数据库完整还原的目的是还原整个数据库。整个数据库在还原期间处于脱机状态。在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。

在完整恢复模式下,数据库可以还原到特定时间点。时间点可以是最新的可用备份、特定的日期和时间或者标记的事务。

安全说明:
建议您不要从未知源或不可信源附加或还原数据库。这些数据库可能包含执行非预期 Transact-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误。使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB,然后检查数据库中的代码,例如存储过程或其他用户定义代码。
 


 还原完整数据库
通常,将数据库恢复到故障点分为下列基本步骤:

备份活动事务日志(称为日志尾部)。此操作将创建结尾日志备份。如果活动事务日志不可用,则该日志部分的所有事务都将丢失。
重要提示:
在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。如果无法访问该数据文件,则不能备份事务日志。在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。
 

有关详细信息,请参阅结尾日志备份。

还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。

如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name WITH NORECOVERY)。

从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。

恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。此步骤也可以与还原上一次日志备份结合使用。

数据库完整还原通常可以恢复到日志备份中的某一时间点或标记的事务。但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。有关详细信息,请参阅将数据库还原到备份中的某个时间点。

下图显示了这一过程。故障发生后 (1),将创建结尾日志备份 (2)。接着,将数据库还原到该故障点。这涉及到还原数据库备份、后续差异备份以及在差异备份后执行的每个日志备份,包括结尾日志备份。


还原整个数据库时,应使用单一还原顺序。下面的示例说明还原顺序中用于将数据库还原到故障点的数据库完整还原方案的关键选项。还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。将省略与此目的不相关的语法和详细信息。

数据库将还原并前滚。数据库差异用于减少前滚时间。此还原顺序用于避免丢失工作;上次还原的备份为结尾日志备份。

还原顺序的基本 RESTORE 语法是:

RESTORE DATABASE database FROM full database backup WITH NORECOVERY;

RESTORE DATABASE database FROM full_differential_backup WITH NORECOVERY;

RESTORE LOG database FROM log_backup WITH NORECOVERY;
对于其他每个日志备份,重复此还原日志步骤。

RESTORE DATABASE database WITH RECOVERY;

示例
对于以下示例,AdventureWorks 示例数据库已设置为在数据库备份之前使用完整恢复模式。此示例将创建 AdventureWorks 数据库的结尾日志备份。接下来,示例将还原较早的完整数据库备份和日志备份,然后还原结尾日志备份。示例将在最后的单独步骤中恢复数据库。

注意:
此示例使用在完整数据库备份的“在完整恢复模式下使用数据库备份”部分中创建的数据库备份和日志备份。
 


此示例以 ALTER DATABASE 语句开头,该语句将恢复模式设置为 FULL。

  
USE master;
--Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks
TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak'
   WITH NORECOVERY;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
  WITH FILE=1,
    NORECOVERY;

--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
  WITH FILE=2,
    NORECOVERY;

--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks
  FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
  WITH FILE=3,
    NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO恢复到故障点
还原完整数据库备份

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16436858/viewspace-541431/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2008-10-17

  • 博文量
    1319
  • 访问量
    2105793