Automatisches Backup einer SQL Server 2008 Express Datenbank auf Windows Server 2008 R2
In einem anderen Artikel hatte ich beschrieben, wie man eine SQL-Express auf einem Windows Arbeitsplatzrechner sichert.
Nach einer Softwareinstallation auf einem Windows 2008 R2 Server musste nun dafür gesorgt werden, dass auch dort die SQLExpress Datenbanken gesichert werden.
1. Backup Ziel erstellen:
In meinem Fall habe ich einfach einen Ordner C:\Backup\MSSQL-Express\ angelegt.
Dieser wird dann vom Backup-Tool einfach als File-Backup weggesichert.
2. SQLCMD als Helferlein 🙂
Im Gegensatz zur vorherigen Beschreibung ist in diesem Fall keine Softwareinstallation mehr notwendig! Der Server bleibt also ’sauber‘.
In der Beschreibung der Software war lediglich angegeben, dass eine SQLExpress-Datenbank verwendet wird. Aber für das Backup müsste man schon wissen, welche Datenbanken dort existieren:
Konsole (cmd.exe) als Administrator ausführen und folgendes testen:
C:\Program Files\Microsoft SQL Server\100\Tools\Binn>sqlcmd -S SERVERNAME\SqlExpress
Damit verbindet man sich erst einmal mit dem SQL-Express Server und erhält eine Eingabeaufforderung die mit ‚1>‘ beginnt.
Dort erfragen wir jetzt die vorhandenen SQL-Datenbanken. Nach der ersten Zeile bitte einmal ENTER drücken, um in der zweiten Zeile dann mit ‚Go‘ das Kommando auszulösen::
1> SELECT name from sys.databases
2> Go
Ergebnis:name
—————————————————————————-
master
tempdb
model
msdb
SOPHOS521
SophosSecurity
SOPHOSPATCH52
SOPHOSENC52
Okay:
Die Syntax:
„C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“ -E -S <SERVERNAME>\<SQLEXPRESSERVERNAME> -Q „BACKUP DATABASE <DATENBANKNAME> TO DISK='<BACKUPVERZEICHNIS>'“
Jetzt das Backup manuell testen:
„C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“ -E -S MEINSERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak'“
Jetzt sollte sich im Backup-Verzeichnis eine Datei namens SOPHOS521.bak befinden.
Die Dateinamen muss man natürlich anpassen. 🙂
UZI – we do it automatic:
Also Aufgabenplaner auf, Einfache Aufgabe erstellen:
Name: SQL-Backup
Beschreibung: Backup der SQLExpress Datenbanken
Sicherheitsoptionen: Unabhängig von der Benutzeranmeldung ausführen + mit höchsten Berechtigungen ausführen + Ausgeblendet Konfigurieren für WinServer 2008
Trigger: Täglich 21:00 Uhr
Aktionen:
Programm starten: „C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“
Argumente hinzufügen: -E -S SERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak'“
Das sollte es schon gewesen sein. Hat man mehrere Datenbanken, kann man übrigens eine bestehende Aufgabe exportieren, in einem Texteditor anpassen und dann wieder importieren. So muss man die Jobs nicht immer komplett neu einrichten, sondern muss nur den Datenbanknamen und den Namen der Backupdatei anpassen.
Was tun, wenn die Instanz nicht SQLExpress heißt?
In einigen Fällen kann es sein, dass ein Softwarehersteller eine eigene SQLExpress Instanz anlegt, die natürlich dann auch einen beliebigen Namen hat.
Keine Ahnung? Kein Problem:
Einfach die Dienste auf dem Server anzeigen lassen: Start -> services.msc oder START -> Verwaltung -> Dienste
Dort gibt es einen SQL Server Dienst, der einen Namen in Klammern stehen hat.
Z.B. „SQL Server (SOPHOS)“
Dieser Name in den Klammern ist der Instanzname. Also in dem Fall SOPHOS – SERVERNAME\SOPHOS.
ZUSATZ:
Wenn man die .bak Datei bei jedem Lauf überschreiben will, muss man an die Argumente noch ein ‚WITH INIT‘ anfügen.
Also:
Programm starten: „C:\Program Files\Microsoft SQL Server\100\Tools\Binn\SQLCMD.EXE“
Argumente hinzufügen: -E -S SERVER\SQLExpress -Q „BACKUP DATABASE SOPHOS521 TO DISK=’C:\Backup\MSSQL-Express\SOPHOS521.bak‘ WITH INIT“