本文内容
适用范围:
本文概述了 SQL Server 的数据库还原和恢复过程。
概述
若要从故障中恢复 SQL Server 数据库,数据库管理员必须按照逻辑上正确且有意义的还原顺序来还原一组 SQL Server 备份。 SQL Server 还原和恢复支持从整个数据库、数据文件或数据页的备份中恢复数据,如下所示:
SQL Server 备份和还原可跨所有受支持的操作系统进行。 有关支持的操作系统的信息,请参阅安装 SQL Server 的硬件和软件要求。 有关支持从 SQL Server 的早期版本进行备份的信息,请参阅 RESTORE 中的“兼容性支持”部分。
还原方案
SQL Server 中的还原方案是从一个或多个备份还原数据、继而恢复数据库的过程。 支持的还原方案取决于数据库的恢复模式和 SQL Server 的版本。
下表介绍了不同恢复模式所支持的可行还原方案。
还原方案在简单恢复模式下在完整/大容量日志恢复模式下
数据库完整还原
这是基本的还原策略。 数据库完整还原可能涉及完整数据库备份的简单还原和恢复。 另外,完整的数据库还原还可能涉及还原完整数据库备份,以及还原和恢复差异备份。
有关详细信息,请参阅完整数据库还原(简单恢复模式)。
这是基本的还原策略。 数据库完整还原涉及还原完整数据库备份或差异备份(如果有),以及还原所有后续日志备份(按顺序)。 通过恢复并还原上一次日志备份 (RESTORE WITH ) 完成数据库完整还原。
有关详细信息,请参阅完整数据库还原(完全恢复模式)
文件还原 1
还原损坏的只读文件,但不还原整个数据库。 仅在数据库至少有一个只读文件组时才可以进行文件还原。
还原一个或多个文件,而不还原整个数据库。 可以在数据库处于脱机状态时执行文件还原,对于某些 SQL Server 版本,也可以在数据库仍处于联机状态时执行。 在文件还原过程中,包含正在还原的文件的文件组一直处于脱机状态。
页面还原
不适用
还原损坏的页面。 可以在数据库处于脱机状态时执行页面还原,对于某些 SQL Server 版本,也可以在数据库仍处于联机状态时执行。 在页面还原过程中,正在还原的页面一直处于脱机状态。
必须具有完整的日志备份链(包含当前日志文件),并且必须应用所有这些日志备份以使页面与当前日志文件保持一致。
有关详细信息,请参阅还原页 (SQL Server)。
段落还原 1
按文件组级别并从主文件组和所有读写辅助文件组开始,分阶段还原和恢复数据库。
按文件组级别并从主文件组开始,分阶段还原和恢复数据库。
有关详细信息,请参阅段落还原 (SQL Server)
1 仅在 Edition 中支持联机还原。
还原数据库的步骤
若要执行文件还原,数据库引擎需要执行两个步骤:
若要执行数据库还原,数据库引擎需要执行三个步骤:
无论以何种方式还原数据,在恢复数据库前,SQL Server 数据库引擎都需要保证整个数据库在逻辑上的一致性。 例如,若要还原一个文件,则必须将该文件前滚足够长度,以便与数据库保持一致,然后才能恢复该文件并使其联机。
文件还原或页面还原的优点
只还原和恢复个别文件或页面(而非整个数据库)的方法具有以下优点:
恢复和事务日志
对于大多数还原方案,需要应用事务日志备份并允许 SQL Server 数据库引擎运行恢复进程以使使数据库联机。 恢复是 SQL Server 用于使每个数据库以事务一致(或干净)状态启动的进程。
发生故障转移或其他非干净关闭时,数据库可能处于这样的状态:某些修改从未从缓冲区缓存写入数据文件,且在数据文件内可能有未完成事务所做的某些修改。 SQL Server 实例启动时,会根据最后一个数据库检查点来运行每个数据库的恢复,其中包含三个阶段:
有关每个数据库恢复阶段的进度的信息将记录在 SQL Server 错误日志中。 还可以使用扩展事件跟踪数据库恢复进度。 有关详细信息,请参阅博客文章数据库恢复进度的新扩展事件。
注意
对于段落还原方案,如果在文件备份创建之前,只读文件组就已处于只读状态,则该文件组无需应用日志备份,并且文件还原会跳过日志备份的应用过程。
注意
为了在 SQL Server 服务启动后(例如在 Always On 故障转移群集实例发生故障转移或就地重新启动后)最大限度地提高企业环境中数据库的可用性,SQL Server Edition 可以在重做阶段后,撤消阶段仍在执行时使数据库联机。 这称为“快速恢复”。 但是,当数据库处于联机状态但 SQL Server 服务尚未重新启动时,快速恢复不可用。 例如,执行 ALTER SET ONLINE; 将不允许数据库在恢复的所有三个阶段均已完成前处于读写状态。
恢复模式和支持的还原操作
可用于数据库的还原操作取决于所用的恢复模式。 下表简要说明了每种恢复模式是否支持给定的还原方案以及适用范围。
还原操作完整恢复模式大容量日志恢复模式简单恢复模式
完整还原(如果日志可用)。
某些数据将丢失。
自上次完整备份或差异备份后的任何数据将丢失。
时间点还原
日志备份所涵盖的任何时间。
日志备份包含任何大容量日志更改时不允许。
不支持。
文件还原 1
完全支持。
不完全支持。 2
仅对只读辅助文件可用。
页面还原 1
完全支持。
不完全支持。 2
无。
段落(文件组级)还原 1
完全支持。
不完全支持。 2
仅对只读辅助文件可用。
1 仅在 SQL Server Edition 中可用
2 有关所需条件,请参阅本文后面的。
重要
无论数据库的恢复模式如何,SQL Server 备份都无法还原到早于创建该备份的版本的 SQL Server 数据库引擎版本。
简单恢复模式下的还原方案
简单恢复模式对还原操作有下列限制:
如果这些限制中有任何不适合于恢复要求的内容,我们建议您考虑使用完整恢复模式。 有关详细信息,请参阅备份概述 (SQL Server)。
重要
无论数据库的恢复模式如何,SQL Server 备份都无法从早于创建该备份的版本的 SQL Server 版本还原。
在大容量日志恢复模式下进行还原
本节讨论特定于大容量日志恢复模式的还原注意事项,大容量日志恢复模式专门用于补充完整恢复模式。
注意
有关大容量日志恢复模式的介绍,请参阅事务日志 (SQL Server)。
通常,大容量日志恢复模式与完整恢复模式相似,针对完整恢复模式的说明信息对两者都适用。 但是,大容量日志恢复模式对时点恢复和联机还原存在影响。
对时点恢复的限制
如果在大容量恢复模式下执行的日志备份包含大容量日志更改,则不允许进行时点恢复。 试图对包含大容量更改的日志备份执行时点恢复将导致还原操作失败。
对联机还原的限制
仅在满足下列条件时,联机还原顺序才有效:
如果未满足这些条件,联机还原顺序将失败。
注意
建议在启动联机还原之前切换为完整恢复模式。 有关详细信息,请参阅恢复模式 (SQL Server)。
有关如何执行联机还原的信息,请参阅联机还原 (SQL Server)。
数据库恢复顾问 (SQL Server Studio)
数据库恢复顾问简化了制定还原计划的过程,可以很轻松地实现最优的正确还原顺序。 很多已知数据库还原问题和客户所要求的增强功能已得到解决。 数据库恢复顾问引入的主要增强功能包括:
有关详细信息,请参阅下列 SQL Server 可管理性博客中有关数据库恢复顾问的信息:
加速数据库恢复
SQL Server 2019 (15.x) 和 Azure SQL 数据库中开始提供加速数据库恢复。 通过重新设计 SQL Server 数据库引擎,加速数据库恢复极大地提高了数据库可用性,尤其是存在长时间运行事务的情况下。 启用了加速数据库恢复的数据库在故障转移或其他非干净关闭后完成恢复过程的速度显著加快。 启用加速数据库恢复后,回滚取消长时间运行的事务的速度也显著加快。
可使用以下语法对 SQL Server 2019 (15.x) 按数据库启用加速数据库恢复:
ALTER DATABASE [] SET ACCELERATED_DATABASE_RECOVERY = ON;
注意
Azure SQL 数据库上默认已启用加速数据库恢复。
相关内容
*请认真填写需求信息,我们会在24小时内与您取得联系。