私は自分の問題に少し混乱しています。リモート サーバーにバックアップ ファイルがあり、ローカルに復元する必要があります。問題なくファイルを復元できますが、何らかの理由でパスの変数をパスに追加すると、デフォルトのバックアップ場所になります。パスを直接配置する場合は機能するため、共有が問題であるとは思いません。エラーとパス変数の出力結果を含めました。印刷されたパスをコピーして変数に置き換えたところ、問題なく動作しました。パスが追加されているため、もちろんファイルを見つけることができません。
私のスクリプト
--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 が異常終了しています。
ありがとう