我对我的问题有点困惑。我在远程服务器上有一个备份文件,我需要在本地恢复。我可以毫无问题地恢复文件,但有些原因,当我将路径的变量放在我的路径附加到默认备份位置时。如果我直接把它放在路径上就行了,所以我不相信共享是问题所在。我包含了错误和我的路径变量的打印结果。我复制了打印的路径并将其替换为我的变量,它工作得很好。由于附加了路径,当然无法找到该文件。
我的剧本
--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异常终止。
由于
答案 0 :(得分:1)
我能够通过将路径传递到临时表中然后在需要时调用来解决问题。