我有一个 SQL2005 Express 数据库,我想在同一实例上创建它的副本。您如何使用脚本来做到这一点?
我已经有一个用于生成备份的脚本,但恢复失败......
错误:
消息 3234,16 级,状态 2,第 2 行
逻辑文件“MyDB_data”不是一部分
数据库“MyDB_Test”。使用恢复
FILELISTONLY 列出逻辑文件
名称。
消息 3013,16 级,状态 1,
第 2 行 RESTORE DATABASE 正在终止
不正常地。
决议:
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'
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)