执行数据库完整还原(完整恢复模式)
数据库完整还原的目的是还原整个数据库。整个数据库在还原期间处于离线状态。在数据库的任何部分变为在线之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。
在完整恢复模式下,数据库可以还原到特定时间点。时间点可以是最新的可用备份、特定的日期和时间或者标记的事务。
安全说明: |
---|
建议您不要从未知源或不可信源附加或还原数据库。这些数据库可能包含执行非预期 Transact-SQL 代码的恶意代码,或通过修改架构或物理数据库结构导致错误。使用来自未知源或不可信源的数据库前,请在非生产服务器上针对数据库运行 DBCC CHECKDB,然后检查数据库中的代码,例如存储过程或其他用户定义代码。 |
还原完整数据库
通常,将数据库恢复到故障点分为下列基本步骤:
- 备份活动事务日志(称为日志尾部)。此操作将创建尾日志备份。如果活动事务日志不可用,则该日志部分的所有事务都将丢失。
重要提示: 在大容量日志恢复模式下,备份任何包含大容量日志操作的日志都需要访问数据库中的所有数据文件。如果无法访问该数据文件,则不能备份事务日志。在这种情况下,您必须手动重做自最近备份日志以来所做的所有更改。 - 还原最新完整数据库备份而不恢复数据库 (RESTORE DATABASE database_name FROM backup_device WITH NORECOVERY)。
- 如果存在差异备份,则还原最新的差异备份而不恢复数据库 (RESTORE DATABASE database_name WITH NORECOVERY)。
- 从还原备份后创建的第一个事务日志备份开始,使用 NORECOVERY 依次还原日志。
- 恢复数据库 (RESTORE DATABASE database_name WITH RECOVERY)。此步骤也可以与还原上一次日志备份结合使用。
- 数据库完整还原通常可以恢复到日志备份中的某一时间点或标记的事务。但是,在大容量日志恢复模式下,如果日志备份包含大容量更改,则不能进行时点恢复。有关详细信息,请参阅将数据库还原到备份中的某个时间点。
还原整个数据库时,应使用单一还原顺序。下面的示例说明还原顺序中用于将数据库还原到故障点的数据库完整还原方案的关键选项。还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。将省略与此目的不相关的语法和详细信息。
数据库将还原并前滚。数据库差异用于减少前滚时间。此还原顺序用于避免丢失工作;上次还原的备份为尾日志备份。
还原顺序的基本 RESTORE 语法是:
- 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;
示例
对于以下示例,AdventureWorks
示例数据库已设置为在数据库备份之前使用完整恢复模式。此示例将创建 AdventureWorks
数据库的尾日志备份。接下来,示例将还原较早的完整数据库备份和日志备份,然后还原尾日志备份。示例将在最后的单独步骤中恢复数据库。
注意: |
---|
此示例使用在完整数据库备份的“在完整恢复模式下使用数据库备份”部分中创建的数据库备份和日志备份。 |
此示例以 ALTER DATABASE 语句开头,该语句将恢复模式设置为 FULL
。
USE master;
--Make sure the database is using the full recovery model.
ALTER DATABASE AdventureWorks SET RECOVERY FULL;
GO
--Create tail-log backup.
BACKUP LOG AdventureWorks
TO DISK = 'Z:\SQLServerBackups\AdventureWorks.bak''Z:\SQLServerBackups\AdventureWorks.bak'
WITH NORECOVERY; GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=1,
NORECOVERY;
--Restore the regular log backup (from backup set 2).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=2,
NORECOVERY;
--Restore the tail-log backup (from backup set 3).
RESTORE LOG AdventureWorks
FROM DISK = 'Z:\SQLServerBackups\AdventureWorks.bak'
WITH FILE=3,
NORECOVERY;
GO
--recover the database:
RESTORE DATABASE AdventureWorks WITH RECOVERY;
GO
恢复到故障点
还原完整数据库备份
- 如何还原数据库备份 (Transact-SQL)
- 如何还原数据库备份 (SQL Server Management Studio)
- 如何通过现有的数据库备份创建新的数据库 (SQL Server Management Studio)
还原差异数据库备份
还原事务日志备份
还原数据备份之后,必须还原所有后续的事务日志备份,然后再恢复数据库。
使用 SQL Server 管理对象 (SMO) 还原备份
恢复到时间点
在完整恢复模式下,数据库可以还原到日志备份内的特定时间点。时间点可以是特定的日期和时间、标记的事务或日志序列号 (LSN)。有关详细信息,请参阅将数据库还原到备份中的某个时间点。
对 SQL Server 早期版本中备份的支持
在 SQL Server 2005 中,您可以还原使用 SQL Server 7.0 版、SQL Server 2000 或 SQL Server 2005 创建的数据库备份。但是,SQL Server 2005 无法还原使用 SQL Server 7.0 或 SQL Server 2000 创建的 master、model 和 msdb 备份。此外,包含创建索引操作的 SQL Server 7.0 日志备份无法还原到 SQL Server 2000 或 SQL Server 2005。
SQL Server 2005 使用与 SQL Server 早期版本不同的默认路径。因此,若要从备份还原在 SQL Server 7.0 或 SQL Server 2000 的默认位置中创建的数据库,必须使用 MOVE 选项。有关新默认路径的信息,请参阅 SQL Server 2005 的默认实例和命名实例的文件位置。
注意: |
---|
使用 SQL Server 6.5 或早期版本创建的数据库备份采用的格式不兼容,无法在 SQL Server 2005 中还原。有关如何将使用 SQL Server 6.5 或早期版本创建的数据库升级到 SQL Server 2005 的信息,请参阅从 SQL Server 6.5 或更早版本复制数据库。 |
请参阅
概念
在大容量日志恢复模式下备份
在完整恢复模式下备份
差异数据库备份
完整数据库备份
减少还原数据库时所用的恢复时间
了解 SQL Server 中备份的还原和恢复工作方式
使用事务日志备份
其他资源
帮助和信息
更改历史记录
发布日期 | 历史记录 |
---|---|
2006 年 7 月 17 日 |
|