Datenbank automatisch Wiederherstellen
SQL-Server 2005
Moin.
Ich möchte jeden Tag das Backup des Vortages vom Produktivsystem als Restore in mein Test- und auch das Entwicklungssystem automatisch einspielen.
Das Vortagesbackup ist eines von 10 Backup-Files (+10 Transaktionsprotokolle) (Aufbau: DatenbanknameYYYYMMDDHHMM.bak)
Gibt es eine Möglichkeit über ein T-SQL im Wartungsplan diesen Vorgang automatisch darzustellen?
Mein Ansatz war: Filenamen als Variable aufbauen, aber irgendwie bekomme ich das nicht hin.
Danke für eure Hilfen.
Daniel
Moin.
Ich möchte jeden Tag das Backup des Vortages vom Produktivsystem als Restore in mein Test- und auch das Entwicklungssystem automatisch einspielen.
Das Vortagesbackup ist eines von 10 Backup-Files (+10 Transaktionsprotokolle) (Aufbau: DatenbanknameYYYYMMDDHHMM.bak)
Gibt es eine Möglichkeit über ein T-SQL im Wartungsplan diesen Vorgang automatisch darzustellen?
Mein Ansatz war: Filenamen als Variable aufbauen, aber irgendwie bekomme ich das nicht hin.
Danke für eure Hilfen.
Daniel
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 101811
Url: https://administrator.de/contentid/101811
Ausgedruckt am: 22.11.2024 um 13:11 Uhr
5 Kommentare
Neuester Kommentar
Hallo,
sowas Ähnliches habe ich schon umgesetzt.
Kurz zu meiner Vorgehensweise:
Es wird über ein Batch Script ein Backup einer Datenbank erstellt und dieses Backup wird dann über die gleiche Batch-Datei auf einem anderen Rechner in eine Datenbank "restored".
Hierzu nutzt dann das BackupRestoreScript zusätzlich eine Komprimierung, um die Bandbreite zwischen den beiden Systemen zu schonen. (sehr angenehm bei niedriger Bandbreitenverfügbarkeit)
Hierzu habe ich grob eine Übersicht skizziert:
Global: Es wird sqlcmd oder osql benötigt (beide Systeme), psexec von sysinternals und einen Packer deiner Wahl z.B. 7-zip.... naja und n paar Scripting Kenntnisse
1) Überprüfung auf Erreichbarkeit des "Restore-Gerätes" anhand ping -n 2 restorerechner
1a) Abbruch bei Errorlevel NEQ 0
2) Erstellen des backup und restore Scriptes
3) Ausführen des Backupscriptes
4) Packen und Kopieren des gepackten Backups auf den Zielserver
5) Mittels psexec (sysinternals) ein Script auf dem Zielsystem starten, was die gepackte Datei wieder entpackt. (Spart ne Meeeenge Bandbreite... ich hatte nur eine 2 MBit Leitung zur Verfügung und das Backup / Restore Vorhaben würde einfach zu lange dauern... )
6) Starten des restorescripts auf dem Zielsystem.
7) Löschen der Temporären Dateien und abschließen des JOBs. Bei einem Fehler wird eine E-Mail oder net use Nachricht geschickt.
Beispielauszüge aus meinem Backup und Restore Script:
Naja... ich denke mal, dass das als Denkunterstützung schon mehr wie ausreichen ist und wünsch Dir viel Erfolg und Spaß bei der Umsetzung!
Gruß
Markus
sowas Ähnliches habe ich schon umgesetzt.
Kurz zu meiner Vorgehensweise:
Es wird über ein Batch Script ein Backup einer Datenbank erstellt und dieses Backup wird dann über die gleiche Batch-Datei auf einem anderen Rechner in eine Datenbank "restored".
Hierzu nutzt dann das BackupRestoreScript zusätzlich eine Komprimierung, um die Bandbreite zwischen den beiden Systemen zu schonen. (sehr angenehm bei niedriger Bandbreitenverfügbarkeit)
Hierzu habe ich grob eine Übersicht skizziert:
Global: Es wird sqlcmd oder osql benötigt (beide Systeme), psexec von sysinternals und einen Packer deiner Wahl z.B. 7-zip.... naja und n paar Scripting Kenntnisse
1) Überprüfung auf Erreichbarkeit des "Restore-Gerätes" anhand ping -n 2 restorerechner
1a) Abbruch bei Errorlevel NEQ 0
2) Erstellen des backup und restore Scriptes
3) Ausführen des Backupscriptes
4) Packen und Kopieren des gepackten Backups auf den Zielserver
5) Mittels psexec (sysinternals) ein Script auf dem Zielsystem starten, was die gepackte Datei wieder entpackt. (Spart ne Meeeenge Bandbreite... ich hatte nur eine 2 MBit Leitung zur Verfügung und das Backup / Restore Vorhaben würde einfach zu lange dauern... )
6) Starten des restorescripts auf dem Zielsystem.
7) Löschen der Temporären Dateien und abschließen des JOBs. Bei einem Fehler wird eine E-Mail oder net use Nachricht geschickt.
Beispielauszüge aus meinem Backup und Restore Script:
:: [...]
set "backupscript1=BACKUP DATABASE [%backupDBname%] TO DISK = N'%backupspeicherort%' WITH NOFORMAT, NOINIT, NAME = N'%backupDBname%-Vollständig Datenbank Sichern', SKIP, NOREWIND, NOUNLOAD, STATS = 10"
:: [...]
set "restorescript1=RESTORE DATABASE [%restoreDBname%] FROM DISK = N'%restoreSpeicherPfadLokal%\%GlobalBackupName%' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10"
:: [...]
"%SQLCMDoderOSQLexe%" -S %backupSERVER% -U %backupUSER% -P %backupPASS% -i "%~dp0\%backupscriptname%"
:: [...]
"%SQLCMDoderOSQLexe%" -S %restoreSERVERInstance% -U %restoreUSER% -P %restorePASS% -i "%~dp0\%restorescriptname%"
:: [...]
Naja... ich denke mal, dass das als Denkunterstützung schon mehr wie ausreichen ist und wünsch Dir viel Erfolg und Spaß bei der Umsetzung!
Gruß
Markus