数据库完整还原的目的是还原整个数据库。 整个数据库在还原期间处于脱机状态。
在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。
在完整恢复模式下,还原数据备份之后,必须还原所有后续的事务日志备份,然后再恢复数据库。
您可以将数据库还原到这些日志备份之一的特定 恢复点 。 恢复点可以是特定的日期和时间、标记的事务或日志序列号 (LSN)。
还原数据库时,特别是在完整恢复模式或大容量日志恢复模式下,您应使用一个还原顺序。 还原顺序 由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。
一、将数据库还原到故障点
通常,将数据库恢复到故障点分为下列基本步骤:
1.备份活动事务日志(称为日志尾部)。 此操作将创建结尾日志备份。 如果活动事务日志不可用,则该日志部分的所有事务都将丢失。
重要
在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。 如果无法访问该数据文件,则不能备份事务日志。
在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。
2.还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。
3.如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name FROM differential_backup_device WITH NORECOVERY)。
还原最新差异备份可减少必须还原的日志备份数。
4.从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。
5.恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。 此步骤也可以与还原上一次日志备份结合使用。
下图说明此还原顺序。 故障发生后 (1),将创建结尾日志备份 (2)。 接着,将数据库还原到该故障点。
这涉及到还原数据库备份、后续差异备份以及在差异备份后执行的每个日志备份,包括结尾日志备份。
基本 TRANSACT-SQL RESTORE 语法
上图中还原顺序的基本 RESTORETransact-SQL 语法如下:
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;
示例:恢复到故障点 (Transact-SQL)
以下 Transact-SQL 示例显示了将数据库还原到故障点的还原顺序中的基本选项。 此示例将创建数据库的结尾日志备份。
接下来,此示例将还原完整数据库备份和日志备份,然后还原结尾日志备份。 此示例将在最后的单独步骤中恢复数据库。
USE master;
--Create tail-log backup.
BACKUP LOG AdventureWorks2012
TO DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH NORECOVERY;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks2012
FROM DISK = 'Z:\SQLServerBackups\AdventureWorksFullRM.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks2012 WITH RECOVERY;
GO
二、将数据库还原到日志备份中的某个时间点
在完整恢复模式下,完整的数据库还原通常可恢复到日志备份中的某个时间点、标记的事务或 LSN。
但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。
时点还原方案示例
下例假定针对一个关键任务型数据库系统,每天午夜创建一个完整数据库备份;
从星期一到星期六,每小时创建一个差异数据库备份;全天每 10 分钟创建一个事务日志备份。
若要将数据库还原到星期三凌晨 5:19 的状态, 请执行以下操作:
1.还原星期二午夜创建的完整数据库备份。
2.还原星期四凌晨 5:00 创建的差异数据库 备份。
3.应用星期四凌晨 5:10创建的事务日志 备份。
4.应用星期三凌晨 5:20 创建的事务日志 备份,指定恢复进程仅应用到凌晨 5:19 之前发生的事务。
或者,如果需要将数据库还原到它在星期四凌晨 3:04 的状态, 而在星期四凌晨 3:00 创建的差异数据库备份已不可用,
则执行下列操作:
1.还原在星期三午夜创建的数据库备份。
2.还原星期四凌晨 2:00 创建的差异数据库 备份。
3.应用从星期四凌晨 2:10 到 3:00 创建的所有事务 日志 备份。
4.应用星期四凌晨 3:10 创建的事务日志 备份,停止凌晨 3:04 的恢复进程。
SQLSERVER完整数据库还原(完整恢复模式)
来源:这里教程网
时间:2026-03-02 11:52:38
作者:
编辑推荐:
下一篇:
相关推荐
-
雷神推出 MIX PRO II 迷你主机:基于 Ultra 200H,玻璃上盖 + ARGB 灯效
2 月 9 日消息,雷神 (THUNDEROBOT) 现已宣布推出基于英
-
制造商 Musnap 推出彩色墨水屏电纸书 Ocean C:支持手写笔、第三方安卓应用
2 月 10 日消息,制造商 Musnap 现已在海外推出一款 Oce
热文推荐
- Intel英特尔Core i7-12700K跑分及参数性能详解
Intel英特尔Core i7-12700K跑分及参数性能详解
26-03-02 - SQLSERVER完整数据库还原(完整恢复模式)
SQLSERVER完整数据库还原(完整恢复模式)
26-03-02 - 将 SQL Server 数据库还原到某个时点(完整恢复模式)
将 SQL Server 数据库还原到某个时点(完整恢复模式)
26-03-02 - 深入理解Ubuntu内核网络栈配置(小白也能学会的Linux网络优化指南)
- 终于有了让程序员脱离代码的工具了
终于有了让程序员脱离代码的工具了
26-03-02 - 在完整恢复模式下将数据库还原到故障点 (Transact-SQL) (2020-01-09 17:06)
- 记:SQL执行效率提升的操作详解
记:SQL执行效率提升的操作详解
26-03-02 - 海康威视萤石云提示不在线0x1007解决方法图解教程
海康威视萤石云提示不在线0x1007解决方法图解教程
26-03-02 - Intel Core i7-11600H跑分排名及参数性能详解
Intel Core i7-11600H跑分排名及参数性能详解
26-03-02 - sqlserver事务日志增长过快
sqlserver事务日志增长过快
26-03-02
