RSo*_*erg 23 sql sql-server restore sql-server-express
我有一个SQL2005 Express数据库,我想在同一个实例上创建一个副本.你如何用脚本来做这件事?
我已经有一个用于生成备份的脚本,但恢复失败了......
错误:
消息3234,级别16,状态2,行2逻辑文件"MyDB_data"不是数据库"MyDB_Test"的一部分.使用RESTORE 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;
Run Code Online (Sandbox Code Playgroud)
原因:
我在第一次尝试时没有正确识别逻辑路径.
Nic*_*ias 40
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'
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
23079 次 |
| 最近记录: |