将文件还原到新位置 (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. 还原数据库文件作为 网格中,指定要移动的文件或文件的新位置。

    列头 价值观
    原始文件名 源备份文件的完整路径。
    文件类型 指定备份中的数据类型: 数据日志Filestream 数据。 表中包含的数据位于 数据文件 中。 事务日志数据位于 日志文件 中。 存储在文件系统上的二进制大型对象(BLOB)数据位于 Filestream 数据文件 中。
    还原为 要还原的数据库文件的完整路径。 若要指定新的还原文件,请单击文本框并编辑建议的路径和文件名。 在 “还原方式 ”列中更改路径或文件名等效于在 Transact-SQL RESTORE 语句中使用 MOVE 选项。
  8. 单击 “确定”

使用 Transact-SQL

将文件还原到新位置

  1. (可选)执行 RESTORE FILELISTONLY 语句以确定完整数据库备份中的文件的数量和名称。

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

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

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

    • 用于移动每个文件到新位置的 MOVE 子句。

    • NORECOVERY 子句。

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

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

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

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

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

示例 (Transact-SQL)

本示例将最初位于驱动器 C 上的数据库的两个文件 MyNwind 还原到驱动器 D 上的新位置。还将应用两个事务日志将数据库还原到当前时间。 该 RESTORE FILELISTONLY 语句用于确定要还原的数据库中文件的编号和逻辑和物理名称。

USE master;  
GO  
-- First determine the number and names of the files in the backup.  
RESTORE FILELISTONLY  
   FROM MyNwind_1;  
-- Restore the files for MyNwind.  
RESTORE DATABASE MyNwind  
   FROM MyNwind_1  
   WITH NORECOVERY,  
   MOVE 'MyNwind_data_1' TO 'D:\MyData\MyNwind_data_1.mdf',   
   MOVE 'MyNwind_data_2' TO 'D:\MyData\MyNwind_data_2.ndf';  
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)