通过现有文件还原文件和文件组 (SQL Server)

本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 将文件和文件组还原到 SQL Server 2014 中的现有文件上。

本主题内容

在您开始之前

局限性与限制

  • 正在还原文件和文件组的系统管理员必须是当前唯一使用数据库还原的人员。

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

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

  • 若要还原已加密的数据库,必须有权访问用于加密数据库的证书或非对称密钥。 如果没有证书或非对称密钥,则无法还原数据库。 因此,只要需要备份,就必须保留用于加密数据库加密密钥的证书。 有关详细信息,请参阅 SQL Server Certificates and Asymmetric Keys

安全

权限

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

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

使用 SQL Server Management Studio

还原文件和文件组到现有文件上

  1. 对象资源管理器中,连接到 SQL Server 数据库引擎的实例,展开该实例,然后展开 “数据库”。

  2. 右键单击所需的数据库,指向 “任务”,指向“ 还原”,然后单击“ 文件和文件组”。

  3. “常规 ”页上的“ 到数据库 ”列表框中,输入要还原的数据库。 可以输入新数据库,也可以从下拉列表中选择现有数据库。 该列表包括服务器上的所有数据库,不包括系统数据库 mastertempdb

  4. 若要指定要还原的备份集的源和位置,请单击以下选项之一:

    • 从数据库

      在列表框中输入数据库名称。 此列表仅包含已根据 msdb 备份历史记录备份的数据库。

    • 从设备

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

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

  5. 选择要还原的备份集 网格中,选择要还原的备份。 此网格显示可用于指定位置的备份。 默认情况下,建议使用恢复计划。 若要替代建议的恢复计划,可以更改网格中的选择。 依赖于已取消选择备份的任何备份都会自动取消选中。

    列头 价值观
    还原 选中的复选框指示要还原的备份集。
    名称 备份集的名称。
    文件类型 指定备份中的数据类型: 数据日志Filestream 数据。 表中包含的数据位于 数据文件 中。 事务日志数据位于 日志文件 中。 存储在文件系统上的二进制大型对象(BLOB)数据位于 Filestream 数据文件 中。
    类型 执行的备份类型: 完整差异事务日志
    服务器 执行备份作的 Database-Engine 实例的名称。
    文件逻辑名称 文件的逻辑名称。
    数据库 备份作中涉及的数据库的名称。
    开始日期 备份作开始的日期和时间,显示在客户端的区域设置中。
    完成日期 备份作完成的日期和时间,显示在客户端的区域设置中。
    大小 备份集的大小(以字节为单位)。
    用户名 执行备份作的用户的名称。
  6. “选择页面 ”窗格中,单击“ 选项” 页。

  7. “还原选项”面板中,选择“覆盖现有数据库”(WITH REPLACE)。 即使其他数据库或文件已存在同名,还原作也会覆盖任何现有数据库及其相关文件。

  8. 单击 “确定”

使用 Transact-SQL

将文件和文件组恢复到现有文件之上

  1. 执行 RESTORE DATABASE 语句以还原文件和文件组备份,并指定:

    • 要还原的数据库的名称。

    • 用于还原完整数据库备份的备份设备。

    • 要还原的每个文件的 FILE 子句。

    • 要还原的每个文件组的 FILEGROUP 子句。

    • REPLACE 选项用于指定每个文件可以覆盖同名且位于相同位置的现有文件进行还原。

      谨慎

      谨慎使用 REPLACE 选项。 有关详细信息,请参阅 。

    • NORECOVERY 选项。 如果在创建备份后尚未修改文件,请指定 RECOVERY 选项。

  2. 如果在创建文件备份后修改了文件,请执行 RESTORE LOG 语句以应用事务日志备份,并指定:

    • 用于应用事务日志的数据库名称。

    • 从中还原事务日志备份的备份设备。

    • 如果在当前事务日志备份之后还有其他事务日志备份需要应用,请使用 NORECOVERY 子句;否则,请指定 RECOVERY 子句。

      如果已应用,事务日志备份必须涵盖备份文件和文件组的时间。

示例 (Transact-SQL)

以下示例还原数据库的文件和文件组 MyNwind ,并替换同名的任何现有文件。 还将应用两个事务日志将数据库还原到当前时间。

USE master;  
GO  
-- Restore the files and filesgroups for MyNwind.  
RESTORE DATABASE MyNwind  
   FILE = 'MyNwind_data_1',  
   FILEGROUP = 'new_customers',  
   FILE = 'MyNwind_data_2',  
   FILEGROUP = 'first_qtr_sales'  
   FROM MyNwind_1  
   WITH NORECOVERY,  
   REPLACE;  
GO  
-- Apply the first transaction log backup.  
RESTORE LOG MyNwind  
   FROM MyNwind_log1  
   WITH NORECOVERY;  
GO  
-- Apply the last transaction log backup.  
RESTORE LOG MyNwind  
   FROM MyNwind_log2  
   WITH RECOVERY;  
GO  

另请参阅

还原数据库备份 (SQL Server Management Studio)
RESTORE (Transact-SQL)
还原文件和文件组 (SQL Server)
使用备份和还原复制数据库