Nachdem bereits eine Lösung für ein automatisches Backup von SQL Datenbanken vorgestellt wurde, geht es in diesem Beitrag um die Wiederherstellung mehrerer SQL Datenbanken aus einem Backup mittels Script.
Lösung
Über das SQL Management Studio mit dem SQL-Server verbinden und mit einem Rechtklick den Punkt Neue Abfrage wählen.
Hinweis: Der Benutzer muss mindestens Rechte als dbcreator besitzen.

Das unten stehende SQL-Script in das Abfragefenster kopieren und die drei Parameter anpassen.
- SET @backuppath = ‚BACKUPPATH‚
- SET @datapath = ‚DATAPATH‘
- SET @logpath = ‚LOGPATH‚
DECLARE @name VARCHAR(256) -- database name DECLARE @backuppath NVARCHAR(256) -- path for backup files DECLARE @datapath VARCHAR(256) -- path for data files DECLARE @logpath VARCHAR(256) -- path for log files DECLARE @backupfileName VARCHAR(256) -- filename for backup DECLARE @datafileName VARCHAR(256) -- filename for database DECLARE @logfileName VARCHAR(256) -- filename for logfile DECLARE @logName VARCHAR(256) -- filename for logfile -- specify database backup directory print 'backup path is ' + @backuppath print 'data path is ' + @datapath print 'log path is ' + @logpath --Table to hold each backup file name in DROP TABLE #files -- remove any previous instance CREATE TABLE #files(fname varchar(200),depth int, file_ int) INSERT #files EXECUTE master.dbo.xp_dirtree @backuppath, 1, 1 SELECT * FROM #files DECLARE files CURSOR FOR SELECT fname FROM #files OPEN files FETCH NEXT FROM files INTO @name WHILE @@FETCH_STATUS = 0 BEGIN DECLARE @cleanname AS VARCHAR(255) SET @cleanname = REPLACE(@name, '.BAK', '') PRINT @cleanname SET @backupfileName = @backuppath + @name SET @datafileName = @datapath + @cleanname + '.MDF' SET @logfileName = @logpath + @cleanname + '_log.LDF' SET @logName = @cleanname + '_log' print 'backup file is ' + @backupfileName print 'data file is ' + @datafileName print 'log file is ' + @logfileName RESTORE DATABASE @cleanname FROM DISK = @backupfileName WITH RECOVERY, MOVE @cleanname TO @datafileName, MOVE @logName TO @logfileName FETCH NEXT FROM files INTO @name END CLOSE files DEALLOCATE files
Hier ein Beispiel:

Wurde das Script angepasst, wird es mit einem Klick auf Ausführen gestartet.

Je nach Umfang und Größe der wiederherzustellenden Datenbanken, kann es eine Weile dauern, bis die Wiederherstellung abgeschlossen wurde.
Im Fenster Meldungen können aktuelle Logs betrachtet werden.

Nachdem das Script durchlaufen und alle Datenbanken wiederhergestellt wurden, sind diese im Objekt-Explorer zu finden.
