路径变量的问题还原

时间:2012-06-22 18:34:08

标签: sql-server

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

我的剧本

 --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'
  

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

由于

1 个答案:

答案 0 :(得分:1)

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