示例:数据库的段落还原(完整恢复模式)

段落还原顺序将从主文件组及所有具有读写权限的辅助文件组开始,在文件组级别分阶段还原和恢复数据库。

在此示例中,灾难发生后,数据库 adb 被还原到新计算机。 该数据库使用完整恢复模式,因此,开始进行还原之前必须先获取数据库的结尾日志备份。 灾难发生之前,所有文件组均处于联机状态。 文件组 B 是只读的。 必须还原所有辅助文件组,但这些辅助文件组将按重要性顺序进行还原: A (最高), C其次,最后为 B。 在此示例中,存在四个日志备份,其中包括结尾日志备份。

结尾日志备份

在还原数据库之前,数据库管理员必须备份日志尾部。 由于数据库已损坏,因此创建结尾日志备份需要使用 NO_TRUNCATE 选项:

BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE  

结尾日志备份是在以下还原顺序中应用的最后一个备份。

还原顺序

注意

联机还原顺序的语法与脱机还原顺序的语法完全相同。

  1. 部分还原主文件组和辅助文件组 A

    RESTORE DATABASE adb FILEGROUP='Primary' FROM backup1   
       WITH PARTIAL, NORECOVERY  
    RESTORE DATABASE adb FILEGROUP='A' FROM backup2   
       WITH NORECOVERY  
    RESTORE LOG adb FROM backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    
  2. 对文件组 C进行联机还原。

    此时,主文件组和辅助文件组 A 处于联机状态。 文件组 BC 中的所有文件都处于恢复挂起状态,这两个文件组处于脱机状态。

    来自步骤 1 中的最后一条 RESTORE LOG 语句的消息指出:由于文件组 C 不可用,因此涉及此文件组的事务回滚已延迟。 可继续执行常规操作,但这些事务将持有锁并且在完成回滚前不会截断日志。

    在第二个还原顺序中,数据库管理员将还原文件组 C

    RESTORE DATABASE adb FILEGROUP='C' FROM backup2a WITH NORECOVERY  
    RESTORE LOG adb FROM backup3 WITH NORECOVERY  
    RESTORE LOG adb FROM backup4 WITH NORECOVERY  
    RESTORE LOG adb FROM backup5 WITH NORECOVERY  
    RESTORE LOG adb FROM tailLogBackup WITH RECOVERY  
    

    此时,主文件组和文件组 A 以及 C 处于联机状态。 文件组 B 中的文件仍保持恢复挂起状态,而该文件组处于脱机状态。 解析延迟的事务后,日志被截断。

  3. 对文件组 B进行联机还原。

    在第三个还原顺序中,数据库管理员将还原文件组 B。 文件组 B 的备份是在该文件组变为只读状态之后进行的,因此,在恢复过程中无需将其前滚。

    RESTORE DATABASE adb FILEGROUP='B' FROM backup2b WITH RECOVERY  
    

    所有文件组现在都处于联机状态。

其他示例

另请参阅

BACKUP (Transact-SQL)
联机还原 (SQL Server)
应用事务日志备份 (SQL Server)
RESTORE (Transact-SQL)
段落还原 (SQL Server)