Die Sage 100 bietet im Standard keine Möglichkeit um die Anwendungsdatenbank zu sichern.
Ein Backup lässt sich mit den Boardmitteln des Microsoft SQL-Servers ab der Standardversion zwar automatisieren, doch fehlt dieses Feature in der Expressversion.
Durch die Kombination aus einem SQL-Script und der Windows Aufgabenplanung lässt sich ein solides, automatisiertes Backup auch beim Einsatz der Expressversion des SQL-Servers erstellen.
SQL-Script zur Datensicherung
Das verwendete Script sichert alle Datenbanken, die nicht explizit über die Liste „NOT IN“ ausgeschlossen wurden. Neben der Anwendungsdatenbank wird somit 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 in Datei 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 Datenbanken 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
Um das SQL-Script auszuführen, verwenden wir den Konsolenbefehl sqlcmd.exe
sqlcmd.exe -S SAGE100 -E -i C:\Scripts\backup.sql
Über den Parameter „-S“ geben wir den Server an, also den Namen des Rechners, auf dem der Datenbankserver läuft. Im Beispiel heißt dieser „SAGE100“. Wenn eine benannte Instanz verwendet wird, so ist diese hier ebenfalls anzugeben.
Der Parameter „-E“ bedeutet, dass wir eine trusted connection verwenden, also die integrierte Authentifizierung des SQL-Servers verwenden. Zur dieser Vorgehensweise möchte ich dringend raten, da das Kommando nachfolgend in der Windows Aufgabenplanung verwendet wird und es grob fahrlässig ist Passwörter im Klartext abzuspeichern.
Die Angabe des Parameters „-i“ übergibt das SQL-Backupscript zur Ausführung an den SQL-Server.
Einrichtung der Windows Aufgabenplanung
Zunächst starten wir die Windows Aufgabenplanung. Das geht z.B. über die Tastenkombination WIN+R. Im Feld „Öffnen“ geben wir „taskschd.msc“ ein und bestätigen mit Enter oder einem Klick auf „OK“.

In der Aufgabenplanung klicken wir nun mit der rechten Maustaste auf „Aufgabenplanungsbibliothek“ und wählen dann den Menüpunkt „Aufgabe erstellen…“ aus.

Im nächstem Schritt erstellen wir die Aufgabe.
Auszufüllen ist das Feld „Name“ mit einer aussagekräftigen Bezeichnung der Aufgabe. Das Feld „Beschreibung“ dient der genaueren Spezifikation der Aufgabe.
Über die Schaltfläche „Benutzer oder Gruppe ändern…“ legen Sie fest, unter welcher Benutzerkennung die Aufgabe ausgeführt wird. Wenn Sie im beim Aufruf der sqlcmd.exe eine trusted connection verwenden, stellen Sie bitte sicher, dass das ausgewählte Benutzerkonto über ausreichende Berechtigungen auf dem SQL-Server verfügt.
Wichtig: Damit das Backup auch unbeaufsichtigt im Hintergrund auf dem Server läuft, wählen Sie bitte unbedingt die Option „Unabhängig von der Benutzeranmeldung ausführen“.

Unterhalb der Registerkarte „Trigger“ legen wir fest welche Ereignisse die Ausführung der Aufgabe bedingen. Um einen neuen Trigger anzulegen, klicken Sie bitte auf „Neu“. Im nachfolgenden Screenshot definieren einen eine Ausführung nach Zeitplan, der an Werktagen ab dem 22.02.2021 um 22 Uhr gestartet wird. Somit wird ein tägliches Backup der Datenbanken an Werktagen um 22 Uhr erstellt.

Unter der Reiterkarte Aktionen definieren Sie nun die auszuführende Aktion, also die Ausführung des SQL-Scripts. Klicken Sie auf „Neu“ und wählen im nachfolgenden Dialog die Aktion „Programm starten“ aus.
im Feld „Programm/Skript“ geben Sie den Befehl sqlcmd.exe ein. Im Feld „Argumente hinzufügen (optional)“ ergänzen Sie die in unserem Anwendungsfall keineswegs optionalen Argumente wie oben beschrieben.
Bestätigen Sie den Dialog mit „OK“ und schließen Sie die Aufgabe.

Um die Funktionalität der Aufgabe zu überprüfen, führen Sie diese manuell aus und überprüfen ggf. das Fehlerprotokoll.