2016-11-03 16 views
0

以下のスクリプトを使用して、.bakファイル名を手動で入力したデータベースを復元しました。私はデータベースを復元するために自動化プロセスを実行する必要があります。私はリモートサーバフォルダから.bakファイル名を取得するためにxp_DirTreeでストアドプロシージャを使用しようとしました。ストアドプロシージャは結果なしで実行されます。私がローカルパスを試してみたら、.bakファイルをフォルダに入れることができます。私はそれが許可の問題だと思ったが、パーミッションは問題ありません。誰でも私に何か原因を教えてもらえますか?データベースを復元するために使用ディレクトリから.bakファイル名を自動的に復元するには?

スクリプト:

CREATE TABLE #CustomerrestoreFiles(
backupfile VARCHAR(100)) 
--Drop Table #CustomerrestoreFiles (backupfile) 
VALUES 

('Customer_backup_2016_09_15_203001_9888161'), 
('Customer_backup_2016_10_10_203001_7101588'), 
('Customer_backup_2016_10_14_203001_6621303'), 
('Customer_backup_2016_10_15_203001_5397847'), 
('Customer_backup_2016_10_16_203002_0291343'), 
('Customer_backup_2016_10_17_203002_2861353') 


DECLARE @CustomerDBfileToRestore VARCHAR(100), @backupLocation varchar(500), @mdfLocation varchar(500), @ldfLocation varchar(500) 

DECLARE restorecursor CURSOR FOR 
SELECT backupfile FROM #CustomerrestoreFiles 

OPEN restorecursor 

FETCH NEXT FROM restorecursor 
INTO @CustomerDBfileToRestore 

WHILE @@FETCH_STATUS = 0 
BEGIN 
    SET @backupLocation = 'F:\Customer bak files' + '\' + @CustomerDBfileToRestore + '\' + @CustomerDBfileToRestore +'.bak' 
    SET @mdfLocation = 'F:\Files\Customer_Restore_Files\' + @CustomerDBfileToRestore + '.mdf' 
    SET @ldfLocation = 'F:\Files\Customer_Restore_Files\' + @CustomerDBfileToRestore + '.ldf' 
    RESTORE DATABASE @CustomerDBfileToRestore 
    FROM DISK = @backupLocation 

    WITH FILE = 1, 

    MOVE 'Customer_Data' TO @mdfLocation, 
     MOVE 'Customer_Log' TO @ldfLocation, 
    NOUNLOAD, REPLACE, STATS = 1 

    FETCH NEXT FROM restorecursor 
    INTO @CustomerDBfileToRestore 
END 
CLOSE restorecursor 
DEALLOCATE restorecursor 

答えて

0

私は、これがマップされたネットワークドライブの問題です賭けます。 SQLユーザーがドライブを認識できません。代わりにUNC命名を試してください。以下の記事は有用であるかもしれません。

How to backup a database to a network drive

+0

ありがとうございます。私はUNCの道を試みました。まだ空の結果が得られます。 – Amelia

関連する問題