sql – 如何在同一台服务器上备份和恢复数据库作为副本? - 代码日志

sql – 如何在同一台服务器上备份和恢复数据库作为副本?

我有一个SQL2005 Express数据库,我想在同一个实例上创建一个副本。你怎么用脚本去做这个?

我已经有一个生成备份的脚本,但还原失败了…

错误:

Msg 3234, Level 16, State 2, Line 2
Logical file ‘MyDB_data’ is not part
of database ‘MyDB_Test’. Use RESTORE
FILELISTONLY to list the logical file
names.
Msg 3013, Level 16, State 1,
Line 2 RESTORE DATABASE is terminating
abnormally.

决议:

RESTORE DATABASE [MyDB_Test]
FROM DISK = 'C:\temp\SQL\MyDB.bak'
WITH
MOVE 'MyDB' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test.mdf'
, MOVE 'MyDB_log' TO 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\DATA\MyDB_Test_log.ldf'
, REPLACE;

原因:
我第一次尝试中没有正确识别逻辑路径。

RESTORE FILELISTONLY是一个信息命令,不需要执行还原。用户可以使用它来确定数据文件的逻辑名称,可以与MOVE命令一起将数据库恢复到新的位置。

根据错误消息的建议,您需要使用RESTORE FILELISTONLY查看数据库的逻辑名称。您的恢复命令有这些错误。

以下是您需要做的工作示例:

--backup the database
backup database test1 to disk='c:\test1_full.bak'

-- use the filelistonly command to work out  what the logical names 
-- are to use in the MOVE commands.  the logical name needs to
-- stay the same, the physical name can change
restore filelistonly from disk='c:\test1_full.bak'
 --------------------------------------------------
|  LogicalName  |           PhysicalName           |
 --------------------------------------------------
| test1         | C:\mssql\data\test1.mdf          |
| test1_log     | C:\mssql\data\test1_log.ldf      |
 -------------------------------------------------

restore database test2 from disk='c:\test1_full.bak'
with move 'test1' to 'C:\mssql\data\test2.mdf',
move 'test1_log' to 'C:\mssql\data\test2.ldf'
http://stackoverflow.com/questions/1360529/how-do-you-backup-and-restore-a-database-as-a-copy-on-the-same-server

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:sql – 如何在同一台服务器上备份和恢复数据库作为副本?