Estou tentando fazer uma cópia do banco de dados criando um script de backup e restauração. Eu tenho o procedimento de backup funcionando corretamente, mas continuo recebendo o erro
Relocações de arquivo conflitantes foram especificadas para arquivo. Apenas uma única cláusula WITH MOVE deve ser especificada para qualquer nome de arquivo lógico.
quando executo o procedimento para fazer o restore.
Aqui está o código do procedimento. Alguém consegue identificar qual é o meu erro?
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
Você não deve mover o arquivo de backup, a
MOVE
cláusula usa o nome do arquivo de banco de dados lógico como o primeiro parâmetro e, em seguida,TO ...
é o nome do arquivo físico de destino para o arquivo de banco de dados correspondente.Referência BOL em RESTORE
Você pode recuperar o nome do arquivo lógico dos arquivos de banco de dados de RESTORE FILELISTONLY (observe a
LogicalName
coluna no conjunto de resultados).