从主文件组和所有读写辅助文件组开始,分阶段在文件组级别进行数据库的恢复和还原。
在此示例中,数据库 adb 在灾难发生后还原到新计算机。 数据库正在使用完整恢复模式;因此,在还原开始之前,必须对数据库执行结尾日志备份。 灾难发生前,所有文件组都处于联机状态。 文件组 B 是只读的。 必须还原所有辅助文件组,但它们按重要性顺序进行还原: A (最高), C最后 B还原。 在此示例中,有四个日志备份,包括结尾日志备份。
Tail-Log 备份
在还原数据库之前,数据库管理员必须备份日志的结尾。 由于数据库已损坏,因此创建结尾日志备份需要使用NO_TRUNCATE选项:
BACKUP LOG adb TO tailLogBackup WITH NORECOVERY, NO_TRUNCATE
结尾日志备份是在以下还原序列中应用的最后一个备份。
还原序列
注释
联机还原序列的语法与脱机还原序列的语法相同。
主文件和辅助文件组
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文件组
C的联机还原。此时,主文件组和辅助文件组
A处于联机状态。 文件组B和C中的所有文件都处于恢复挂起状态,并且这些文件组已脱机。来自步骤 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的文件保持恢复挂起,文件组处于脱机状态。 已解析延迟事务,并发生日志截断。文件组
B的联机还原。在第三个还原序列中,数据库管理员还原文件组
B。 文件组的备份在文件组B变为只读之后进行;因此,它不必在恢复期间向前滚动。RESTORE DATABASE adb FILEGROUP='B' FROM backup2b WITH RECOVERY所有文件组现在都处于联机状态。
其他示例
另请参阅
BACKUP (Transact-SQL)
联机还原(SQL Server)
应用事务日志备份 (SQL Server)
RESTORE (Transact-SQL)
碎片还原 (SQL Server)