如何将数据库还原到新位置和新名称 (Transact-SQL)
更新日期: 2006 年 4 月 14 日
本主题介绍了如何使用新位置以及新名称(可选)还原数据库。
安全说明: |
---|
建议您不要附加或还原未知或不可信源中的数据库。此类数据库可能包含恶意代码,这些代码可能会执行非预期的 Transact-SQL 代码,或者通过修改架构或物理数据库结构导致错误。在使用未知或不可信源中的数据库之前,请在非生产服务器上的数据库中运行 DBCC CHECKDB,同时检查数据库中的代码(例如,存储过程或其他用户定义代码)。 |
用新名称还原数据库
(可选)执行 RESTORE FILELISTONLY 语句,以确定完整数据库备份中的文件数及名称。
执行 RESTORE DATABASE 语句可以还原完整数据库备份,同时指定:
- 数据库的新名称。
注意: 如果要将数据库还原到其他服务器实例,则可以选择使用原始名称而不是新名称。 - 从中还原完整数据库备份的备份设备。
- 指定 NORECOVERY 子句,前提是还原了文件备份后,还要应用事务日志备份。否则应指定 RECOVERY 子句。
如果要应用事务日志备份,则事务日志备份必须包含备份文件的时间。 - 如果文件名已经存在,则为每个要还原到新位置的文件指定 MOVE 子句。例如,可能需要在同一台服务器上创建现有数据库的副本以用于测试。在这种情况下,由于原始数据库的数据库文件已经存在,因此在还原操作期间创建数据库副本时,必须指定不同的文件名。
MOVE 子句的语法如下:
MOVE 'logical_file_name_in_backup' TO 'operating_system_file_name'
[ ,...n ] [ , ]
其中,logical_file_name_in_backup 是备份集中数据或日志文件的名称,operating_system_file_name 是文件应还原到的位置。n 是占位符,指示可以指定其他 MOVE 子句。请为每个要从备份集还原到新位置的逻辑文件指定 MOVE 语句。注意: 若要从备份集中获取逻辑文件列表,请使用 RESTORE FILELISTONLY。
- 数据库的新名称。
示例
此示例创建名为 MyAdvWorks
的新数据库。MyAdvWorks
是现有 AdventureWorks
数据库的副本,它包括两个文件:AdventureWorks_Data
和 AdventureWorks_Log
。由于 AdventureWorks
数据库已存在,因此在还原操作过程中必须移动备份中的文件。RESTORE FILELISTONLY
语句用于确定待还原数据库内的文件数及名称。
注意: |
---|
有关如何创建 AdventureWorks 数据库的完整数据库备份的示例,请参阅如何创建完整数据库备份 (Transact-SQL)。 |
注意: |
---|
备份和还原事务日志的示例(包括时点还原)使用从 AdventureWorks 创建的 MyAdvWorks_FullRM 数据库的方式与下面的 MyAdvWorks 示例相同。但是,必须将所得的 MyAdvWorks_FullRM 数据库更改为使用完整恢复模式:ALTER DATABASE MyAdvWorks_FullRM SET RECOVERY FULL 。 |
USE master
GO
-- First determine the number and names of the files in the backup.
-- AdventureWorks_Backup is the name of the backup device.
RESTORE FILELISTONLY
FROM AdventureWorks_Backup
-- Restore the files for MyAdvWorks.
RESTORE DATABASE MyAdvWorks
FROM AdventureWorks_Backup
WITH RECOVERY,
MOVE 'AdventureWorks_Data' TO 'D:\MyData\MyAdvWorks_Data.mdf',
MOVE 'AdventureWorks_Log' TO 'F:\MyLog\MyAdvWorks_Log.ldf'
GO
请参阅
概念
当数据库在其他服务器实例上可用时管理元数据
备份和还原的安全注意事项
通过备份和还原来复制数据库
其他资源
RESTORE (Transact-SQL)
SQL Server Management Studio 教程