还原差异数据库备份 (SQL Server)

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2014 中还原差异数据库备份。

本主题内容

在您开始之前

局限性与限制

  • 在显式或隐式事务中不允许使用 RESTORE 命令。

  • 无法在早期版本的 SQL Server 中还原较新版本的 SQL Server创建的备份。

  • 在 SQL Server 2014 中,可以从使用 SQL Server 2005 或更高版本创建的数据库备份还原用户数据库。

先决条件

  • 在完整或大容量日志恢复模式下,在还原数据库之前,必须备份活动事务日志(称为日志尾部)。 有关详细信息,请参阅备份事务日志(SQL Server)。

安全

权限

如果还原的数据库不存在,则用户必须具有 CREATE DATABASE 权限才能执行 RESTORE。 如果数据库存在,则 RESTORE 权限默认授予给sysadmindbcreator固定服务器角色的成员,以及数据库的所有者(dbo)。(对于 FROM DATABASE_SNAPSHOT 选项,数据库始终存在。)

RESTORE 权限被授予那些成员信息始终可供服务器轻松获取的角色。 由于仅当数据库可访问且未损坏时,才能检查固定数据库角色成员身份,因此执行 RESTORE 时并不总是如此, 因此db_owner 固定数据库角色的成员没有 RESTORE 权限。

使用 SQL Server Management Studio

还原差异数据库备份

  1. 连接到Microsoft SQL Server 数据库引擎的相应实例后,在对象资源管理器中,单击服务器名称以展开服务器树。

  2. 展开 数据库。 根据数据库,选择用户数据库或展开 系统数据库,然后选择系统数据库。

  3. 右键单击数据库,指向 “任务”,指向“ 还原”,然后单击“ 数据库”。

  4. 在“ 常规 ”页上,使用 “源 ”部分指定要还原的备份集的源和位置。 选择以下任一选项:

    • 数据库

      从下拉列表中选择要还原的数据库。 该列表仅包含已根据 msdb 备份历史记录备份的数据库。

    注释

    如果备份是从其他服务器获取的,则目标服务器将不具有指定数据库的备份历史记录信息。 在这种情况下,请选择 “设备 ”以手动指定要还原的文件或设备。

    • 设备

      单击“浏览”按钮打开 “选择备份设备 ”对话框。 在 “备份媒体类型 ”框中,选择列出的设备类型之一。 若要为 备份媒体 框选择一个或多个设备,请单击“ 添加”。

      将想要的设备添加到 “备份媒体 ”列表框后,单击“ 确定 ”返回到 “常规 ”页。

      “源:设备:数据库 ”列表框中,选择应还原的数据库的名称。

      注意 仅当选择 “设备” 时,此列表才可用。 只有所选设备上具有备份的数据库才可用。

  5. “目标 ”部分中, “数据库 ”框会自动填充要还原的数据库的名称。 若要更改数据库的名称,请在 “数据库 ”框中输入新名称。

    注释

    若要在特定时间点停止还原,请单击 时间线 以访问 “备份时间线 ”对话框。 有关在特定时间点停止数据库还原的帮助,请参阅将 SQL Server 数据库还原到时间点(完整恢复模式)。

  6. 要还原的备份集网格 中,选择您希望还原的差异备份。

    有关备份集中要还原网格中的列的信息,请参阅“还原数据库 (常规页)”

  7. “选项” 页上的“ 还原选项 ”面板中,可以选择以下任一选项(如果适合你的情况):

    • 覆盖现有数据库(使用 REPLACE 替代)

    • 保留复制设置(WITH KEEP_REPLICATION)

    • 在还原每个备份之前进行提示

    • 限制对已还原数据库的访问(WITH RESTRICTED_USER)

    有关这些选项的详细信息,请参阅“还原数据库”(选项页)。

  8. “恢复”状态 框选择一个选项。 此框确定还原作后数据库的状态。

    • RESTORE WITH RECOVERY 是默认行为,通过回滚未提交的事务,使数据库可供使用。 无法还原其他事务日志。 如果要立即还原所有必要的备份,请选择此选项。

    • RESTORE WITH NORECOVERY ,它使数据库无法运行,并且不会回滚未提交的事务。 可以还原其他事务日志。 在恢复数据库之前,不能使用该数据库。

    • RESTORE WITH STANDBY ,使数据库处于只读模式。 它撤消未提交的事务,但将撤销操作保存在备用文件中,以便可以恢复已撤销的恢复操作。

    有关选项的说明,请参阅“还原数据库”(选项页)。

  9. 如果存在与数据库的活动连接,还原操作会失败。 选中 “关闭现有连接”选项 ,确保 Management Studio 和数据库之间的所有活动连接都已关闭。

  10. 如果希望在每次还原操作之前收到提示,请选择在还原每个备份之前提示。 这通常是没有必要的,除非数据库规模很大,并且你希望监控还原操作的状态。

  11. (可选)使用 “文件” 页将数据库还原到新位置。 有关移动数据库的帮助,请参阅将数据库还原到新位置(SQL Server)。

  12. 单击 “确定”

使用 Transact-SQL

恢复差异数据库备份

  1. 执行 RESTORE DATABASE 语句,指定 NORECOVERY 子句,以还原差异数据库备份之前的完整数据库备份。 有关详细信息,请参阅 “如何:还原完整备份”。

  2. 执行 RESTORE DATABASE 语句以还原差异数据库备份,并指定:

    • 应用差异数据库备份的数据库的名称。

    • 用于还原差异数据库备份的备份设备。

    • 如果在还原差异数据库备份后仍需应用事务日志备份,则应使用 NORECOVERY 子句。 否则,请指定 RECOVERY 子句。

  3. 使用完整恢复模式或大容量日志恢复模式,还原差异数据库备份会将数据库还原到完成差异数据库备份时的状态。 若要恢复到故障点,必须应用在创建上次差异数据库备份后创建的所有事务日志备份。 有关详细信息,请参阅应用事务日志备份 (SQL Server)

示例 (Transact-SQL)

答: 还原差异数据库备份

此示例还原 MyAdvWorks 数据库的完整和差异备份。

-- Assume the database is lost, and restore full database,   
-- specifying the original full database backup and NORECOVERY,   
-- which allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   RECOVERY;  
GO  

B. 还原数据库、差异数据库和事务日志备份

此示例还原MyAdvWorks数据库的完整备份、差异备份和事务日志备份。

-- Assume the database is lost at this point. Now restore the full   
-- database. Specify the original full database backup and NORECOVERY.  
-- NORECOVERY allows subsequent restore operations to proceed.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH NORECOVERY;  
GO  
-- Now restore the differential database backup, the second backup on   
-- the MyAdvWorks_1 backup device.  
RESTORE DATABASE MyAdvWorks  
   FROM MyAdvWorks_1  
   WITH FILE = 2,  
   NORECOVERY;  
GO  
-- Now restore each transaction log backup created after  
-- the differential database backup.  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log1  
   WITH NORECOVERY;  
GO  
RESTORE LOG MyAdvWorks  
   FROM MyAdvWorks_log2  
   WITH RECOVERY;  
GO  

相关任务

另请参阅

差异备份 (SQL Server)
RESTORE (Transact-SQL)