2016-11-03 3 views
0

Я использовал ниже сценарий для восстановления баз данных, где я дал имя файла .bak вручную. Мне нужно сделать процесс автоматизации для восстановления данных. поэтому я попытался использовать хранимую процедуру с помощью xp_DirTree, чтобы получить имя файла .bak из папки удаленного сервера. но выполнение хранимой процедуры без каких-либо результатов. когда я пробовал локальный путь, я могу видеть файлы .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

Я держал пари, что это отображается проблема сетевого диска. Пользователь не может видеть диск. Попробуйте вместо имени UNC. Следующая статья может оказаться полезной.

How to backup a database to a network drive

+0

Спасибо. Я также пробовал путь UNC. но все еще получаю пустые результаты. – Amelia

Смежные вопросы