Ich habe unten Skript verwendet, um Datenbanken wiederherzustellen, wo ich .bak Dateiname manuell angegeben habe. Ich muss den automatisierten Prozess zur Wiederherstellung von Datenbasen durchführen. Also habe ich versucht, gespeicherte Prozedur mit xp_DirTree zu verwenden, um den Namen der .bak-Datei vom Remote-Server-Ordner zu erhalten. aber die gespeicherte Prozedur wird ohne Ergebnisse ausgeführt. Wenn ich den lokalen Pfad ausprobiert habe, kann ich .bak Dateien in Ordner sehen. Zuerst dachte ich, es ist ein Erlaubnisproblem, aber die Berechtigungen sind in Ordnung. Könnte mir jemand vorschlagen, was der Fehler verursacht?Wie wird der Name der .bak-Datei automatisch aus dem wiederherzustellenden Verzeichnis abgerufen?
Skript Datenbanken wiederherstellen:
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
Danke. Ich habe auch den UNC-Weg ausprobiert. aber immer noch leere Ergebnisse. – Amelia