将文件还原到新位置 (SQL Server)
适用于:SQL Server
本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 中将文件还原到新位置。
本主题内容
开始之前:
若要将文件还原到新位置,可使用:
开始之前
限制和局限
还原文件的系统管理员必须是唯一一位当前使用要还原的数据库的人。
不允许在显式或隐式事务中使用 RESTORE。
在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志(称为日志尾部),然后才能还原文件。 有关详细信息,请参阅备份事务日志 (SQL Server)。
若要还原已加密的数据库,您必须有权访问用于对数据库进行加密的证书或非对称密钥。 如果没有证书或非对称密钥,数据库将无法还原。 因此,只要需要该备份,就必须保留用于对数据库加密密钥进行加密的证书。 有关详细信息,请参阅 SQL Server Certificates and Asymmetric Keys。
安全性
权限
如果不存在要还原的数据库,则用户必须有 CREATE DATABASE 权限才能执行 RESTORE。 如果数据库存在,则 RESTORE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及数据库的所有者 (dbo)(对于 FROM DATABASE_SNAPSHOT 选项,数据库始终存在)。
RESTORE 权限被授予那些成员身份信息始终可由服务器使用的角色。 因为只有在固定数据库可以访问且没有损坏时(在执行 RESTORE 时并不会总是这样)才能检查固定数据库角色成员身份,所以 db_owner 固定数据库角色成员没有 RESTORE 权限。
使用 SQL Server Management Studio
将文件还原到新位置
在 “对象资源管理器” 中,连接到 SQL Server 数据库引擎的实例,再依次展开该实例、 “数据库” 。
右键单击所需数据库,指向“任务”,再指向“还原”,然后单击“文件和文件组”。
在 “常规” 页上的 目标数据库 列表框中,输入要还原的数据库。 您可以输入新的数据库,也可以从下拉列表中选择现有的数据库。 该列表包含了服务器上除系统数据库 master 和 tempdb之外的所有数据库。
若要指定要还原的备份集的源和位置,请单击以下选项之一:
源数据库
在列表框中输入数据库名称。 此列表仅包含根据 msdb 备份历史记录已进行过备份的数据库。
源设备
单击浏览按钮。 在 “指定备份设备” 对话框的 “备份介质类型” 列表框中,选择列出的设备类型之一。 若要为 “备份介质” 列表框选择一个或多个设备,请单击 “添加”。
将所需设备添加到 “备份介质” 列表框后,单击 “确定” 返回到 “常规” 页。
在 “选择用于还原的备份集” 网格中,选择用于还原的备份。 此网格将显示对于指定位置可用的备份。 默认情况下,系统会推荐一个恢复计划。 若要覆盖建议的恢复计划,可以更改网格中的选择。 任何依赖于已取消选择备份的备份,也将被自动取消选择。
列标题 值 还原 选中的复选框指示要还原的备份集。 Name 备份集的名称。 文件类型 指定备份中数据的类型: “数据”、 “日志”或 “Filestream 数据”。 包含在表中的数据备份在 “数据” 文件中。 事务日志数据备份在 “日志” 文件中。 存储在文件系统上的二进制大型对象 (BLOB) 数据备份在 Filestream 数据 文件中。 类型 执行的备份类型有: “完整”、 “差异”或 “事务日志”。 服务器 执行备份操作的数据库引擎实例的名称。 文件逻辑名称 文件的逻辑名称。 Database 备份操作中涉及的数据库的名称。 开始日期 备份操作开始的日期和时间,按客户端的区域设置显示。 完成日期 备份操作完成的日期和时间,按客户端的区域设置显示。 大小 备份集的大小(字节)。 用户名 执行备份操作的用户的名称。 在 “选择页” 窗格中,单击 “选项” 页。
在 “将数据库文件还原为” 网格中,为要移动的文件指定新的位置。
列标题 值 原始文件名 源备份文件的完整路径。 文件类型 指定备份中数据的类型: “数据”、 “日志”或 “Filestream 数据”。 包含在表中的数据备份在 “数据” 文件中。 事务日志数据备份在 “日志” 文件中。 存储在文件系统上的二进制大型对象 (BLOB) 数据备份在 Filestream 数据 文件中。 还原为 要还原的数据库文件的完整路径。 若要指定新的还原文件,请单击文本框,再编辑建议的路径和文件名。 更改“还原为”列中的路径或文件名等效于使用 Transact-SQL RESTORE 语句中的 MOVE 选项。 选择“确定”。
“使用 Transact-SQL”
将文件还原到新位置
(可选)执行 RESTORE FILELISTONLY 语句,以确定完整数据库备份中的文件数及名称。
执行 RESTORE DATABASE 语句可以还原完整数据库备份,同时指定:
要还原的数据库的名称。
从中还原完整数据库备份的备份设备。
为每个要还原到新位置的文件指定 MOVE 子句。
NORECOVERY 子句。
如果在创建文件备份之后对文件进行了修改,则执行 RESTORE LOG 语句以应用事务日志备份,同时指定下列内容:
事务日志将应用到的数据库的名称。
要还原的事务日志备份的备份设备。
如果在应用当前事务日志备份之后还要应用其他事务日志备份,则指定 NORECOVERY 子句;否则指定 RECOVERY 子句。
事务日志备份(如果已应用)必须包含备份文件和文件组时的时间。
示例 (Transact-SQL)
以下示例将 MyNwind
数据库中原来位于驱动器 C 上的两个文件还原到驱动器 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
另请参阅
Restore a Database Backup Using SSMS
RESTORE (Transact-SQL)
通过备份和还原来复制数据库
还原文件和文件组 (SQL Server)