执行数据库完整还原(简单恢复模式)

数据库完整还原的目的是还原整个数据库。整个数据库在还原期间处于脱机状态。在数据库的任何部分变为联机之前,必须将所有数据恢复到同一点,即数据库的所有部分都处于同一时间点并且不存在未提交的事务。

在简单恢复模式下,数据库不能还原到特定备份中的特定时间点。

还原整个数据库

  1. 简单恢复模式下的完整数据库还原只涉及一个或两个 RESTORE 语句,具体取决于是否需要还原差异数据库备份。

如果只使用完整数据库备份,则只需还原最近的备份,如下图所示。

仅还原完整数据库备份

如果还使用差异数据库备份,则应还原最近的完整数据库备份而不恢复数据库,然后还原最近的差异数据库备份并恢复数据库。下图显示了这一过程。

还原完整数据库备份和差异数据库备份

还原整个数据库时,应当使用单一的还原顺序。以下示例显了数据库完整还原方案的还原顺序中的关键选项。还原顺序由通过一个或多个还原阶段来移动数据的一个或多个还原操作组成。将省略与此目的无关的语法和详细信息。

将数据库恢复到完整数据库备份的状态。在恢复数据库时,尽管 RECOVERY 选项是默认值,但为清楚起见,仍建议显式指定该选项。

示例

以下示例首先显示了如何使用 BACKUP 语句来创建 AdventureWorks2008R2 数据库的完整数据库备份和差异数据库备份。然后按顺序还原这些备份。

注意注意

此示例以 ALTER DATABASE 语句开头,该语句将恢复模式设置为 SIMPLE。

USE master;
--Make sure the database is using the simple recovery model.
ALTER DATABASE AdventureWorks2008R2 SET RECOVERY SIMPLE;
GO
-- Back up the full AdventureWorks2008R2 database.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' 
  WITH FORMAT;
GO
--Create a differential database backup.
BACKUP DATABASE AdventureWorks2008R2 TO DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak'
   WITH DIFFERENTIAL;
GO
--Restore the full database backup (from backup set 1).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' 
   WITH FILE=1, NORECOVERY;
--Restore the differential backup (from backup set 2).
RESTORE DATABASE AdventureWorks2008R2 FROM DISK = 'Z:\SQLServerBackups\AdventureWorks2008R2.bak' 
   WITH FILE=2, RECOVERY;
GO

还原完整数据库备份

用于还原数据库备份的 RESTORE 语句的基本语法是:

RESTORE DATABASE database_name FROM backup_device [ WITH NORECOVERY ]

注意注意

如果还打算还原差异数据库备份,则应使用 WITH NORECOVERY。

重要说明重要提示

如果将数据库备份还原到其他服务器实例,请参阅通过备份和还原来复制数据库当数据库在其他服务器实例上可用时管理元数据

还原差异数据库备份

用于还原差异数据库备份的 RESTORE 语句的基本语法是:

RESTORE DATABASE database_name FROM backup_device WITH RECOVERY

使用 SQL Server 管理对象 (SMO) 还原备份

对 SQL Server 早期版本中备份的支持

在 SQL Server 2008 中,可以还原使用 SQL Server 2000、SQL Server 2005 或 SQL Server 2008 创建的数据库备份。但是,SQL Server 2008 无法还原使用 SQL Server 2000 或 SQL Server 2005 创建的 mastermodelmsdb 备份。此外,任何早期版本的 SQL Server 都无法还原 SQL Server 2008 备份。

SQL Server 2008 使用与早期版本不同的默认路径。因此,若要还原在 SQL Server 2000 或SQL Server 2005 备份的默认位置创建的数据库,必须使用 MOVE 选项。有关新默认路径的信息,请参阅 SQL Server 的默认实例和命名实例的文件位置

注意注意

有关如何将使用 SQL Server 版本 7.0 或早期版本创建的数据库升级到 SQL Server 2005 的信息,请参阅从 SQL Server 7.0 或更早版本复制数据库