Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express 1. Das Problem In der Express Edition von MS SQL Server 2008 gibt es keine Möglichkeit, gewisse Aufgaben regelmässig und ohne Benutezerinteraktion 'nach Fahrplan' ausführen zu lassen. In der Vollversion von MS SQL Server 2008 würde es dafür den SQL Server Agent geben. Aber die Vollversion kostet... 2. Der Plan Wir können das gleich erreichen, indem wir zwei Dinge miteinander kombinieren: 1. Die Möglichkeit, den SQL Server von der Kommandozeile aus anzusprechen (sqlcmd.exe, in früheren Versionen von MS SQL Server: osql.exe) 2. Den Windows Task Scheduler, der mit jedem Windows mit dabei ist (Start -> Zubehör -> Systemprogramme -> Geplante Tasks) 3. Backup von einer Datenbank mit einem SQL Skript Am billigsten erhalten wir ein SQL Skript, das ein Datenbankbackup erstellt, mit der Scripting Funktionalität innerhalb vom SQL Server Management Studio. Geht so: 3.1. Das Backup so zusammenstellen wie wir es brauchen im Management Studio: M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 1 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 2 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express 3.2. Dann anstatt mit 'OK' zu starten, oben links auf 'Skript' klicken und 'Skript für Aktion in Fenster 'Neue Abfrage' schreiben' wählen: Ergebnis: Als Text: BACKUP DATABASE [KutAdmin] TO DISK = N'C:\Programme\Microsoft SQL Server\MSSQL10.WERNERSSQLEXP\MSSQL\Backup\killme.BAK' WITH NOFORMAT, INIT, NAME = N'KutAdmin-Vollständig Datenbank Sichern', SKIP, NOREWIND, NOUNLOAD, STATS = 10 GO Dieses SQL in die Zwischenablage kopieren und als Textdatei speichern, zum Beispiel direkt auf c:\: Der Inhalt von der Datei kutadaminbackup.txt (nächste Seite): M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 3 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express 4. Das SQL Skript von der Kommandozeile aus starten: Start -> Ausführen -> cmd: Eingeben: sqlcmd -S INFNBK02\WERNERSSQLEXP -E -i c:\kutadaminbackup.txt A) B) C) D) A) Der Kommandoname für den Kommandozeilenzugang zum SQL Server; Hinweis: Vor SQL Server 2008 war das Kommando osql anstatt sqlcmd B) Mit "–S" (Achtung auf Gross/Kleinschrift!) wird der Name vom SQL Server eingeleitet. In diesem Beispiel: -S INFNBK02\WERNERSSQLEXP Dabei ist INFNBK02 der Name vom Computer und WERNERSSQLEXP der Name von der MS SQL Server Instanz C) Mit –E (wieder Achtung auf GRoss-/Kleinschrift!) wird angegeben, dass die Anmeldung am SQL Server mit Windows Authentifizierung erfolgt D) Mit -i (Kleinschrift!) wird eingeleitet, dass nach der Anmeldung am SQL Server ein Skript ausgeführt werden soll, dass sich in der Datei c:\kutadaminbackup.txt befindet M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 4 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express Live: Nach Eingabe von Enter wird die Aneldung am SQL Server gestartet und das Skript wird ausgeführt. Mit Erfolg: 5. Das Skript mit dem Windows Task Scheduler starten 5.1. Die Kommandozeile als .cmd Skript abspeichern, z.B. auf C:\ Der Inhalt von der Datei taeglichbackup.cmd: M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 5 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express 5.2. Einen neuen Task erstellen, der das .cmd Skript ausführt täglich um 23:00: 'Geplanten Task hinzufügen' doppelklicken: Weiter: Durchsuchen: M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 6 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express 'taeglichbackup.cmd' auswählen: 'Täglich' auswählen: (Auf einem Notebook macht vielleicht 'Beim Anmelden' mehr Sinn weil der Notebook ja nicht immer läuft): Startzeit eingeben (z.B. 23:00): M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 7 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express Passwort eingeben: Fertig stellen: Anstatt bis 23:00 zu warten, kann der Task mit der rechten Maustaste und 'Ausführen' direkt gestartet werden: M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 8 / 9 Inforis AG Beckenhofstrasse 16 8006 Zürich www.inforis.ch SQL Hands-On Workshop 2010 EB Zürich Datenbank Backup automatisieren mit SQL Server 2008 Express Ob es funktioniert hat, kann am Dateidatum abgelesen werden: 23:06 – Das stimmt in meinem Fall – gähhhn… ;-) M:\11_Schul\EB_Zuerich\2010_Q3_SQL_HandsOnWorkshop\20100810_SQLServer2008Express_BackupAutomatisieren.doc Werner Müntener, Inforis AG Seite 9 / 9