MEDISTAR-SQL-Datensicherung automatisieren

Unter MEDISTAR-SQL gibt es einen Backup-Dienst, der automatisch eine Siche­rung der Datenbank erstellt und im Ordner …\MEDISTAR\Sicherung ablegt. Damit liegt aber keineswegs eine ausreichende Datensicherung vor. Schließlich befinden sich die Backupdateien noch auf der Festplatte, auf der MEDISTAR und Oracle-Datenbank installiert sind. Bei einem Crash wären Original und Backup futsch.

Man ist also selbst dafür verantwortlich, dass diese Dateien auf einem anderen Medium gesichert werden. Das lässt sich mit Windows-Bordmitteln ein­rich­ten. Hierzu lassen wir z.B. auf einem Arbeitsplatz-PC eine Batch-Datei laufen, die an jedem Wochentag einen anderen Ordner für die Sicherung verwendet.

MSBackup.cmd
@echo off
set Heading=MEDISTAR-Backup-Sicherung
title=%Heading%
 

:: Pfade bitte individuell anpassen!
set MSPath=\\Server\d%%\MEDISTAR
set BackupDrive=E:

:: Wochentag ermitteln. Geht nicht mit CMD-Befehlen, daher VBS.
echo Wscript.Echo WeekdayName(Weekday(now,0),false,0) > %~n0.vbs
FOR /F "usebackq" %%a IN (`cscript.exe %~n0.vbs //nologo`) DO set weekday=%%a
del %~n0.vbs

:: LogDatei nicht in BackupFolder speichern; ROBOCOPY würde sie löschen!
set BackupFolder=%BackupDrive%\%~n0%weekday%
set TmpFile=%BackupDrive%\%~n0%weekday%.tmp
set LogFile=%BackupDrive%\%~n0%weekday%.log
set Options=/MIR /R:1 /W:1 /NC /NDL /NP /NS /TEE /FFT /Log+:%TmpFile%

:: MEDISTAR-Backup um Makrodateien und Patientenlisten ergänzen.
xcopy /d /h /i /f /k %MSPath%\INST\*.mac    %MSPath%\Sicherung\INST\*.*
xcopy /d /i /y /f /k %MSPath%\PARA\PLPARA.* %MSPath%\Sicherung\PARA\*.*

:: LogDatei anlegen, ggfs. überschreiben. Synchronisieren mit ROBOCOPY.
echo %Heading% am %weekday%, den %date% um %time:~0,8% Uhr. > "%TmpFile%"
robocopy %MSPath%\Sicherung %BackupFolder% %Options%

:: ASCII (TmpFile) nach Unicode (LogFile) umwandeln. TmpFile entsorgen.
cmd /u /c type %TmpFile% > %LogFile%
del %TmpFile%

:: LogDatei anzeigen und Batchdatei beenden ohne zu warten.
start %LogFile%

Wenn die Batchdatei richtig eingerichtet ist, wollen wir das DOS-Fenster nicht mehr sehen – wir bekommen ja nach erfolgter Datensicherung die Logdatei angezeigt. Aus diesem Grund starten wir die Batchdatei ohne sichtbares Fenster mit einem kleinen VB-Skript.

MSBStart.vbs
‚ Dieses VisualBasic-Skript startet MSBackup ohne sichtbares Fenster.
‚ Bitte beachten Sie, dass das Skript nicht MSBackup.vbs heißen darf,
‚ weil MSBackup.vbs von der Batchdatei gleichen Namens gelöscht wird!
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.Run "MSBackup.cmd", 0, False
WshShell.Popup "MSBackup wird ausgeführt. Bitte warten...", 3, "Info"

Der dritte Schritt besteht darin, dass die Datensicherung täglich 10 oder 15 Minuten nach der Backup-Erstellung durch den MEDISTAR-Backup-Dienst mit Hilfe der Windows-Aufgabenplanung automatisch startet. Damit das VB-Skript die Batchdatei findet, muss unter «Starten in (optional)» der Pfad angegeben werden. Administratorrechte («mit höchsten Privilegien») sind erforderlich.

Weitere Informationen zu robocopy finden Sie hier.

2 Gedanken zu „MEDISTAR-SQL-Datensicherung automatisieren

  1. Altes.Haus sagt:

    Hallo Herr Happe,

    habe Ihren Vorschlag für die MSBStart.vbs gespeichert und in meine Aufgabeplanung als tägliche Trigger-Aktion eingebaut. Wenn ich die MSBStart,vbs direkt aus dem Verzeichnis starte, in dem die Datei gespeichert ist, funktioniert alles einwandfrei – Start des Backup-Programms und Anzeige des Hinweises im WshShell.Popup. Wird MSBStart.vbs dagegen über die Aufgabenplanung von Windows gestartet (manuell oder automatisch), kommt keine Anzeige des vorgesehenen WshShell.Popup. Das Script läuft sonst schon, d.h. die Backup-Programm läuft einwandfrei, lediglich der Hinweis kommt nicht. Ich habe es auch mal alternativ mit MsgBox probiert mit dem gleichen Ergebnis: keine Anzeige des Hinweises!

    Ich habe übrigens Windows7 64bit Professionell im Einsatz.

    Können Sie mir sagen, woran das liegen könnte? Vielen Dank im voraus!

    MfG Altes.Haus

  2. Bei mir funktioniert es unter Win7 64bit Prof.
    Vielleicht überprüfen Sie noch mal, ob in der Aufgabenplanung die Option «mit höchsten Privilegien ausführen» aktiviert ist.
    Viele Grüße!

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.