0

我对我的问题有点困惑。我在远程服务器上有一个备份文件,需要在本地恢复。我可以毫无问题地恢复文件,但是由于某些原因,当我将路径的变量附加到我的路径时,它是默认备份位置。如果我要直接放置路径,它会起作用,所以我不相信共享是问题所在。我包括了错误和路径变量的打印结果。我已经复制了打印的路径并用我的变量替换了它,它工作得很好。由于附加了路径,因此当然找不到文件。

我的剧本

 --Declare the Network Drive
 Exec XP_CMDSHELL 'net use Y: \\ProdServer\Backups'

--Declare the Filepath
declare @Backupfilename as nvarchar(500)
declare @filename as nvarchar(40)
Set @filename = ( Select Top(1) CONVERT(VARCHAR(36),name)+'.bak' from ProdServer.msdb.dbo.backupset WITH (nolock)
        where database_name='ProdDB'
            order by backup_set_id desc)

Set @Backupfilename = ''''+'Y:\' + @filename + ''''
Print @backupfilename

--Start the Actual Restore
RESTORE DATABASE [TESTRestore] FROM  
DISK = @BackupFileName WITH  FILE = 1,  
MOVE N'ProdDB' TO N'D:\Data\ProdDB_Test.mdf',  
MOVE N'ProdDB_Log' TO N'D:\ProdDB_Test.ldf', 
NOUNLOAD,  REPLACE, STATS = 10
GO


--Clear the Defined Network Path
EXEC XP_CMDSHELL 'net use Y: /delete'

结果

'Y:\ProdDB_backup_201206220600.bak'

消息 3201,级别 16,状态 2,第 15 行
无法打开备份设备 'C:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Backup\'Y:\ProdDB_backup_201206220600.bak''。
操作系统错误 123(文件名、目录名或卷标语法不正确。)。
消息 3013,级别 16,状态 1,第 15 行
RESTORE DATABASE 异常终止。

谢谢

4

1 回答 1

1

我能够通过将路径传递到临时表中,然后在需要时调用它来解决问题。

于 2012-08-01T22:37:48.587 回答