Die Sage 100 bietet im Standard keine Möglichkeit, die Anwendungsdatenbank zu sichern. Mit den Bordmitteln des Microsoft SQL Server lässt sich ein Backup ab der Standard-Edition zwar automatisieren, in der Express-Edition fehlt diese Funktion jedoch.

Mit der Kombination aus einem kleinen SQL-Skript und der Windows-Aufgabenplanung lässt sich auch unter SQL Server Express ein verlässliches, automatisiertes Backup einrichten.

SQL-Skript zur Datensicherung

Das folgende Skript sichert alle Datenbanken, die nicht explizit über die NOT IN-Liste ausgeschlossen werden. Neben der Anwendungsdatenbank wird so z. B. auch die globale Datenbank der Sage 100 gesichert.

DECLARE @name VARCHAR(50)    -- Name der Datenbank
DECLARE @path VARCHAR(256)   -- Dateiablagepfad der Backups
DECLARE @fileName VARCHAR(256) -- Dateiname des Backups
DECLARE @fileDate VARCHAR(20)  -- Datum/Uhrzeit im Dateinamen

-- Pfad des Backupordners setzen
SET @path = 'C:\Backup\'

-- Datum für den Dateinamen
SELECT @fileDate = CONVERT(VARCHAR(20), GETDATE(), 112)

DECLARE db_cursor CURSOR READ_ONLY FOR
SELECT [name]
FROM master.sys.databases
WHERE [name] NOT IN ('master','model','msdb','tempdb')  -- ausgeschlossene DBs
  AND [State] = 0          -- Datenbank muss online sein
  AND is_in_standby = 0

OPEN db_cursor
FETCH NEXT FROM db_cursor INTO @name

WHILE @@FETCH_STATUS = 0
BEGIN
    SET @fileName = @path + @name + '_' + @fileDate + '.bak'
    BACKUP DATABASE @name TO DISK = @fileName

    FETCH NEXT FROM db_cursor INTO @name
END

CLOSE db_cursor
DEALLOCATE db_cursor

Zur Ausführung verwenden wir das Konsolenwerkzeug sqlcmd.exe:

sqlcmd.exe -S SAGE100 -E -i C:\Scripts\backup.sql
  • -S gibt den Server an, also den Rechnernamen, auf dem der Datenbankserver läuft. Wird eine benannte Instanz verwendet, ist diese mit anzugeben (z. B. SAGE100\SQLEXPRESS).
  • -E verwendet die integrierte Windows-Authentifizierung. Dazu rate ich dringend, da das Kommando gleich in der Aufgabenplanung verwendet wird – Klartext-Passwörter dort abzulegen wäre fahrlässig.
  • -i übergibt den Pfad zum SQL-Skript.

Einrichtung der Windows-Aufgabenplanung

Starten Sie die Aufgabenplanung über Win + R und geben Sie taskschd.msc ein.

Dialog Ausführen mit dem Befehl taskschd.msc
Aufgabenplanung über „Ausführen" öffnen.

In der Aufgabenplanung wählen Sie per Rechtsklick auf Aufgabenplanungsbibliothek den Menüpunkt Aufgabe erstellen….

Kontextmenü der Aufgabenplanungsbibliothek mit dem Eintrag Aufgabe erstellen
Eine neue Aufgabe direkt aus der Bibliothek heraus anlegen.

Reiter „Allgemein"

  • Vergeben Sie einen sprechenden Namen und eine Beschreibung.
  • Über Benutzer oder Gruppe ändern… legen Sie fest, unter welchem Konto die Aufgabe läuft. Das Konto braucht ausreichende Rechte auf dem SQL Server.
  • Wichtig: Wählen Sie Unabhängig von der Benutzeranmeldung ausführen, damit die Aufgabe auch unbeaufsichtigt im Hintergrund läuft.
Reiter Allgemein der Aufgabe mit Optionen für Benutzer und Ausführungsmodus
Allgemeine Eigenschaften der Aufgabe.

Reiter „Trigger"

Legen Sie über Neu… den Zeitplan fest – z. B. werktäglich um 22:00 Uhr.

Reiter Trigger mit einem täglichen Zeitplan
Tägliche Ausführung an Werktagen ab dem definierten Startdatum.

Reiter „Aktionen"

  • Klicken Sie auf Neu… und wählen Sie Programm starten.
  • Im Feld Programm/Skript: sqlcmd.exe
  • Im Feld Argumente hinzufügen: -S SAGE100 -E -i C:\Scripts\backup.sql
Reiter Aktionen mit dem Aufruf von sqlcmd.exe und den notwendigen Argumenten
Die Aufgabe ruft sqlcmd.exe mit dem SQL-Skript auf.

Bestätigen Sie mit OK. Zum Abschluss bitte die Aufgabe einmal manuell starten und das Verlaufsprotokoll prüfen.

Was außerdem zu bedenken ist

  • Aufbewahrung: Das Skript überschreibt das Backup desselben Tages. Wer mehrere Tage vorhalten will, sollte den Dateinamen um die Uhrzeit erweitern oder einen separaten Aufräum-Job ergänzen.
  • Speicherort: Ein lokaler Pfad ist nur die halbe Miete. Die Backups gehören anschließend auf ein anderes Medium oder einen anderen Server.
  • Verifikation: Ein Backup, dessen Wiederherstellung nie geprüft wurde, ist kein Backup. Im halbjährlichen Turnus testweise zurückspielen.

Bei Fragen zur Einrichtung oder einer Erweiterung um Off-Site-Replikation gerne direkt melden.

Kontakt