Connect with us

Wie man

Batch-Skript zum Sichern aller Ihrer SQL Server-Datenbanken

Wir haben bereits behandelt, wie Sie eine SQL Server-Datenbank über die Befehlszeile sichern. Was also, wenn Sie alle Ihre Datenbanken gleichzeitig sichern möchten? Sie könnten ein Batch-Skript erstellen, das den Sicherungsbefehl für jede Datenbank ausführt, aber dieses Skript müsste jedes Mal aktualisiert werden, wenn eine Datenbank hinzugefügt oder entfernt wird. Darüber hinaus werden alle Datenbanksicherungen an eine Datei angehängt, die bei jeder Ausführung um die Größe der neuen Sicherung anwächst. Stattdessen erstellen wir im wahrsten Sinne des Wortes „Set it and forget it“ ein Batch-Skript, das sich an Ihren SQL-Server anpasst, wenn neue Datenbanken hinzugefügt und entfernt werden.

Um es gleich auf den Punkt zu bringen, das ist das Backup-Skript:

@ECHO AUS
SETLOCAL

REM Datum im Format JJJJ-MM-TT abrufen (vorausgesetzt, das Gebietsschema sind die Vereinigten Staaten)
FOR /F „tokens=1,2,3,4 delims=/“ %%A IN (‘Datum /T’) DO SET NowDate=%%D-%%B-%%C

REM Erstellen Sie eine Liste der zu sichernden Datenbanken
SET DBList=%SystemDrive%SQLDBList.txt
SqlCmd -E -S MyServer -h-1 -W -Q „SET NoCount ON; SELECT Name FROM master.dbo.sysDatabases WO [Name] NOT IN (‘master’,’model’,’msdb’,’tempdb’)“ > „%DBlist%“

REM Backup jeder Datenbank, wobei das Datum dem Dateinamen vorangestellt wird
FOR /F „tokens=*“ %%I IN (%DBlist%) DO (
ECHO Datenbank sichern: %%I
SqlCmd -E -S MyServer -Q „DATENBANK BACKUP“ [%%I] TO Disk=’D:Backup%NowDate%_%%I.bak’”
ECHO.
)

REM Bereinigen Sie die temporäre Datei
WENN EXIST „%DBList%“ DEL /F /Q „%DBList%“

ENDLOKAL

Angenommen, das Datum ist der 13.01.2009 und Sie haben 3 Datenbanken namens ‘MyDB’, ‘AnotherDB’ und ‘DB Name with Spaces’, das Skript erstellt 3 Dateien am angegebenen Backup-Speicherort:

  • 2009-01-13_AnotherDB.bak
  • 2009-01-13_DB-Name mit Spaces.bak
  • 2009-01-13_MyDB.bak

Anpassen und Ausführen des Batch-Skripts

Natürlich möchten Sie das Skript an Ihre Umgebung anpassen, also müssen Sie Folgendes tun:

  • Wenn das Gebietsschema Ihres Computers nicht auf die USA eingestellt ist, gibt der Befehl ‘Date /T’ das Datum möglicherweise nicht im Format „Di 13.01.2009“ zurück. In diesem Fall erzeugt die Variable NowDate nicht das gewünschte Format und sollte angepasst werden. (1 Platz)
  • Ändern Sie ‘MyServer’ in den Namen Ihres SQL Servers (fügen Sie ggf. den Instanznamen hinzu). (2 Plätze)
  • Die Datenbanken ‘master’, ‘model’, ‘msdb’ und ‘tempdb’ sind Datenbanken, die mit SQL Server ausgeliefert werden. Sie können dieser Liste zusätzliche Datenbanknamen hinzufügen, wenn diese nicht gesichert werden sollen. (1 Platz)
  • Ändern Sie den Sicherungsspeicherort von ‘D:Backup’ in den Speicherort, an dem die Datenbank-Sicherungsdateien gespeichert werden sollen.

Nachdem Sie das Batch-Skript angepasst haben, planen Sie es so, dass es über den Windows-Taskplaner als Benutzer mit Administratorrechten ausgeführt wird, und schon sind Sie fertig.

Continue Reading
Click to comment

Leave a Reply

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Tendencia