本主题介绍如何使用 SQL Server Management Studio 或 Transact-SQL 在 SQL Server 2012 中将 SQL Server 数据库还原到一个新位置并且可以选择重命名该数据库。您可以在同一服务器实例或不同服务器实例上将数据库移到新的目录路径或者创建数据库的副本。
本主题内容
开始之前:
若要将数据库还原到一个新位置并且可以选择重命名该数据库,请使用:
限制和局限
还原完整数据库备份的系统管理员必须是当前使用要还原的数据库的唯一人员。
必备条件
在完整恢复模式或大容量日志恢复模式下,必须先备份活动事务日志,然后才能还原数据库。有关详细信息,请参阅备份事务日志 (SQL Server)。
建议
若要还原已加密的数据库,您必须有权访问用于对数据库进行加密的证书或非对称密钥。如果没有证书或非对称密钥,数据库将无法还原。因此,只要需要该备份,就必须保留用于对数据库加密密钥进行加密的证书。有关详细信息,请参阅 SQL Server 证书和非对称密钥。
有关移动数据库时的其他注意事项的信息,请参阅通过备份和还原来复制数据库。
如果您将 SQL Server 2005 或 SQL Server 2008 数据库还原为 SQL Server 2012,将自动升级该数据库。通常,该数据库将立即可用。但是,如果 SQL Server 2005 数据库具有全文索引,则升级过程将导入、重置或重新生成它们,具体取决于 upgrade_option 服务器属性的设置。如果将升级选项设置为导入 (upgrade_option = 2) 或重新生成 (upgrade_option = 0),在升级过程中将无法使用全文索引。导入可能需要数小时,而重新生成所需的时间最多时可能十倍于此,具体取决于要编制索引的数据量。另请注意,如果将升级选项设置为“导入”,并且全文目录不可用,则会重新生成关联的全文索引。若要更改 upgrade_option 服务器属性的设置,请使用 sp_fulltext_service。
安全性
出于安全性考虑,我们建议您不要从未知或不信任的源附加或还原数据库。此类数据库可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构或物理数据库结构导致错误。在使用未知或不可信源中的数据库之前,请在非生产服务器中的数据库上运行 DBCC CHECKDB,同时检查数据库中的代码(例如,存储过程或其他用户定义代码)。
权限
如果不存在要还原的数据库,则用户必须有 CREATE DATABASE 权限才能执行 RESTORE。如果该数据库存在,则 RESTORE 权限默认授予 sysadmin 和 dbcreator 固定服务器角色成员以及该数据库的所有者 (dbo)。
RESTORE 权限被授予那些成员身份信息始终可由服务器使用的角色。因为只有在固定数据库可以访问且没有损坏时(在执行 RESTORE 时并不会总是这样)才能检查固定数据库角色成员身份,所以 db_owner 固定数据库角色成员没有 RESTORE 权限。
将数据库还原到一个新位置并且可以选择重命名该数据库
连接到相应的 SQL Server 数据库引擎实例,然后在对象资源管理器中,单击服务器名称以展开服务器树。
右键单击“数据库”,然后单击“还原数据库”。“还原数据库”对话框随即打开。
在“常规”页上,使用“源”部分指定要还原的备份集的源和位置。选择以下选项之一:
数据库
从下拉列表中选择要还原的数据库。此列表仅包含已根据 msdb 备份历史记录进行备份的数据库。
注意
如果备份是从另一台服务器执行的,则目标服务器不具有指定数据库的备份历史记录信息。这种情况下,请选择“设备”以手动指定要还原的文件或设备。
设备
单击浏览 (...) 按钮以打开“选择备份设备”对话框。在“备份介质类型”框中,从列出的设备类型中选择一种。若要为“备份介质”框选择一个或多个设备,请单击“添加”。
将所需设备添加到“备份介质”列表框后,单击“确定”返回到“常规”页。
在“源: 设备: 数据库”列表框中,选择应还原的数据库名称。
注意:此列表仅在选择了“设备”时才可用。只有在所选设备上具有备份的数据库才可用。
在“目标”部分中,“数据库”框自动填充要还原的数据库的名称。若要更改数据库名称,请在“数据库”框中输入新名称。
在“还原到”框中,保留默认选项“至最近一次进行的备份”,或者单击“时间线”访问“备份时间线”对话框以手动选择要停止恢复操作的时间点。请参阅备份时间线以获取有关指定特定时间点的详细信息。
在“要还原的备份集”网格中,选择要还原的备份。此网格将显示对于指定位置可用的备份。默认情况下,系统会推荐一个恢复计划。若要覆盖建议的恢复计划,可以更改网格中的选择。当取消选择某个早期备份时,将自动取消选择那些需要还原该早期备份才能进行的备份。
有关“要还原的备份集”网格中的列的信息,请参阅还原数据库(“常规”页)。
若要指定数据库文件的新位置,请选择“文件”页,然后单击“将所有文件重新定位到文件夹”。为“数据文件的文件夹”和“日志文件的文件夹”提供一个新位置。有关该网格的详细信息,请参阅还原数据库(“文件”页)。
在“选项”页上,根据要求调整选项。有关这些选项的详细信息,请参阅还原数据库(“选项”页)。
将数据库还原到一个新位置并且可以选择重命名该数据库
(可选)确定包含要还原的完整数据库备份的备份集中文件的逻辑名称和物理名称。此语句返回备份集内包含的数据库和日志文件的列表。基本语法如下:
RESTORE FILELISTONLY FROM <backup_device> WITH FILE = backup_set_file_number
其中,backup_set_file_number 指示备份在介质集中的位置。您可以通过使用 语句来获取备份集的位置。有关详细信息,请参阅 中的“指定备份集”。
使用 语句还原完整数据库备份。默认情况下,数据文件和日志文件还原到它们的原位置。若要重新定位数据库,请使用 MOVE 选项重新定位每个数据库文件并避免与现有文件发生冲突。
将数据库还原到新位置并使其具有新名称的基本 Transact-SQL 语法如下:
RESTORE DATABASE new_database_name
[ , ] [ FILE ={ backup_set_file_number|@backup_set_file_number } ]
[ , ] MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n ]
下表介绍了此 RESTORE 语句在将数据库还原到新位置时所涉及的参数。有关这些参数的详细信息,请参阅 。
new_database_name backup_device [ ,...n]{ DISK | TAPE } =physical_backup_device_name
{ RECOVERY | NORECOVERY }如果数据库使用完整恢复模式,则可能需要在还原该数据库后应用事务日志备份。在这种情况下,请指定 NORECOVERY 选项。
FILE = { backup_set_file_number | @backup_set_file_number } MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name' [ ,...n]指定备份集中数据文件或日志文件的逻辑名称。创建备份集时,备份集中的数据文件或日志文件的逻辑文件名与其在数据库中的逻辑名称匹配。
指定由 logical_file_name_in_backup 指定的文件的新位置。文件将还原到此位置。
或者,operating_system_file_name 为还原的文件指定一个新的文件名。如果您在相同服务器实例上创建现有数据库的副本,则此操作是必需的。
示例 (Transact-SQL)
USE master;
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks2012_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks2012_Backup;
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks2012_Backup
WITH RECOVERY,
MOVE 'AdventureWorks2012_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks2012_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf';
GO
有关如何创建 AdventureWorks2012 数据库的完整数据库备份的示例,请参阅 。
转载于:https://blog.51cto.com/tianma3798/1403069