更新时间:2021-11-02 10:48:01 来源:极悦 浏览630次
要从故障中恢复 SQL Server 数据库,数据库管理员必须以逻辑上正确且有意义的恢复顺序恢复一组 SQL Server 备份。SQL Server 还原和恢复支持从整个数据库、数据文件或数据页的备份中还原数据,如下所示:
数据库(完整的数据库恢复)
整个数据库被还原和恢复,并且数据库在恢复和恢复操作期间处于脱机状态。
数据文件(一个文件恢复)
恢复和恢复一个数据文件或一组文件。在文件还原期间,包含文件的文件组在还原期间自动脱机。任何访问脱机文件组的尝试都会导致错误。
数据页(一个页恢复)
在完整恢复模式或大容量日志恢复模式下,您可以还原单个页面。可以在任何数据库上执行页面恢复,而不管文件组的数量。
SQL Server 备份和还原在所有支持的操作系统上工作。有关支持的操作系统的信息,请参阅安装 SQL Server 2016 的硬件和软件要求。有关对 SQL Server 早期版本的备份的支持的信息,请参阅RESTORE (Transact-SQL)的“兼容性支持”部分。
一个恢复的情况在SQL Server是从一个或多个备份恢复数据,然后恢复数据库的过程。支持的还原方案取决于数据库的恢复模型和 SQL Server 的版本。
下表介绍了不同恢复模型支持的可能还原方案。
还原场景 |
简单恢复模式下 |
在完整/大容量日志恢复模式下 |
---|---|---|
完成数据库恢复 |
这是基本的恢复策略。完整的数据库还原可能只涉及还原和恢复完整的数据库备份。或者,完整的数据库还原可能涉及还原完整的数据库备份,然后还原和恢复差异备份。 |
这是基本的恢复策略。完整的数据库还原涉及还原完整的数据库备份和(可选)差异备份(如果有),然后还原所有后续日志备份(按顺序)。完整的数据库还原是通过恢复最后一个日志备份并恢复它来完成的(RESTORE WITH RECOVERY)。 |
文件恢复* |
还原一个或多个损坏的只读文件,而无需还原整个数据库。仅当数据库具有至少一个只读文件组时,文件恢复才可用。 |
还原一个或多个文件,而不还原整个数据库。可以在数据库脱机时执行文件还原,或者对于某些版本的 SQL Server,在数据库保持联机时执行文件还原。在文件还原期间,包含正在还原的文件的文件组始终处于脱机状态。 |
页面还原 |
不适用 |
恢复一个或多个损坏的页面。可以在数据库脱机时执行页面还原,或者对于某些版本的 SQL Server,在数据库保持联机时执行页面还原。在页面还原期间,正在还原的页面始终处于脱机状态。 一个完整的日志备份链必须可用,直到当前日志文件,并且必须全部应用它们以使页面与当前日志文件保持同步。 |
零碎恢复* |
在文件组级别分阶段还原和恢复数据库,从主文件组和所有读/写辅助文件组开始。 |
从主文件组开始,在文件组级别分阶段还原和恢复数据库。 |
*仅企业版支持在线恢复。
要执行文件还原,数据库引擎执行两个步骤:
创建任何丢失的数据库文件。
将数据从备份设备复制到数据库文件。
要执行数据库还原,数据库引擎执行三个步骤:
如果数据库和事务日志文件尚不存在,则创建它们。
将数据库备份介质中的所有数据、日志和索引页复制到数据库文件中。
在所谓的恢复过程中应用事务日志。
不管数据如何恢复,在恢复数据库之前,SQL Server 数据库引擎保证整个数据库在逻辑上是一致的。例如,如果您还原一个文件,则在它前滚到足以与数据库保持一致之前,您无法恢复它并使其联机。
还原和恢复文件或页面而不是整个数据库具有以下优点:
还原较少的数据可减少复制和恢复数据所需的时间。
在 SQL Server 上还原文件或页面可能允许数据库中的其他数据在还原操作期间保持联机。
对于大多数还原方案,必须应用事务日志备份并允许 SQL Server 数据库引擎运行恢复过程以使数据库联机。恢复是 SQL Server 用于每个数据库以事务一致(或干净)状态启动的过程。
在发生故障转移或其他非干净关闭的情况下,数据库可能会处于某些修改从未从缓冲区缓存写入数据文件的状态,并且数据文件中的不完整事务可能会有一些修改。当 SQL Server 实例启动时,它会根据最后一个数据库检查点运行每个数据库的恢复,包括三个阶段:
分析阶段分析事务日志以确定最后一个检查点是什么,并创建脏页表 (DPT) 和活动事务表 (ATT)。DPT 包含数据库关闭时脏页的记录。ATT 包含在数据库未完全关闭时处于活动状态的事务记录。
重做阶段会前滚记录在日志中的每个修改,这些修改在数据库关闭时可能尚未写入数据文件。成功的数据库范围恢复所需的最小日志序列号(minLSN) 可在 DPT 中找到,并标记所有脏页所需的重做操作的开始。在此阶段,SQL Server 数据库引擎将属于已提交事务的所有脏页写入磁盘。
撤消阶段回滚在 ATT 中发现的不完整事务,以确保保留数据库的完整性。回滚后,数据库上线,不能再对数据库应用事务日志备份。
SQL Server错误日志中记录了每个数据库恢复阶段的进度信息。还可以使用扩展事件跟踪数据库恢复进度。
简单恢复模型对还原操作施加了以下限制:
文件还原和分段还原仅适用于只读辅助文件组。有关这些还原方案的信息,请参阅文件还原(简单恢复模型)和零碎还原 (SQL Server)。
不允许页面还原。
不允许时间点还原。
如果这些限制中的任何一个不适合您的恢复需求,我们建议您考虑使用完整恢复模式。
如果在大容量日志恢复模式下进行的日志备份包含大容量日志更改,则不允许时间点恢复。尝试对包含批量更改的日志备份执行时间点恢复将导致还原操作失败。
仅当满足以下条件时,联机还原序列才有效:
在恢复序列开始之前,必须已完成所有必需的日志备份。
在开始在线恢复序列之前,必须支持批量更改。
如果数据库中存在批量更改,则所有文件都必须为 online 或defunct。(这意味着它不再是数据库的一部分。)
如果不满足这些条件,联机恢复序列将失败。
以上是关于“使SQL数据库恢复的方案”的介绍,大家若想了解更多相关知识,不妨来关注一下极悦的Java极悦在线学习,里面的课程内容详细,从入门到精通,对于初学者来说会有很大帮助。
0基础 0学费 15天面授
Java就业班有基础 直达就业
业余时间 高薪转行
Java在职加薪班工作1~3年,加薪神器
工作3~5年,晋升架构
提交申请后,顾问老师会电话与您沟通安排学习