我正在尝试通过编写备份和还原脚本来复制数据库。我的备份程序正常工作,但我不断收到错误
已为文件指定了冲突的文件重定位。对于任何逻辑文件名,只应指定一个 WITH MOVE 子句。
当我运行程序进行恢复时。
这是程序代码。谁能发现我的错误是什么?
ALTER PROCEDURE spDBRestore (@BackupName NVARCHAR(50), @RestoreName NVARCHAR(50))
AS
BEGIN
DECLARE @BackupPath NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\TemplateCopy\'+@BackupName+'.BAK',
@NewDBFileName NVARCHAR(4000) = 'S:\MSSQL10_50.MSSQLSERVER\MSSQL\DATA\'+@RestoreName+'.mdf',
@NewLFFileName NVARCHAR(4000) = 'L:\MSSQL10_50.MSSQLSERVER\MSSQL\Data\'+@RestoreName+'_1.ldf'
select @BackupName, @RestoreName, @NewDBFileName, @newlffilename
RESTORE DATABASE @RestoreName
FROM DISK = @BackupPath
WITH FILE = 1,
MOVE @BackupName TO @NewDBFileName,
MOVE @BackupName TO @NewLFFileName,
NOUNLOAD,
REPLACE;
END
您不应该移动备份文件,该
MOVE
子句将逻辑数据库文件名作为第一个参数,然后TO ...
是相应数据库文件的目标物理文件名。RESTORE 上的 BOL 参考
您可以从RESTORE FILELISTONLY检索数据库文件的逻辑文件名(注意,
LogicalName
结果集中的列)。