Automatisiertes Prüfen des DeltaMaster-Service

In diesem Beitrag soll eine Möglichkeit aufgezeigt werden, mittels des SQL Server Agents den Zustand des DeltaMaster-Service zu prüfen bzw. ihn PDF Downloadautomatisiert wieder zu starten. Hierfür werden einfache Grundfunktionalitäten von Windows eingesetzt, so dass keine zusätzlichen Programme notwendig sind.

1 Grundherausforderung

1.1 Herausforderung

Immer mal wieder kommt es vor, dass Windows einen Dienst im Hintergrund beendet oder stoppt. Kein Problem, wenn er dann auch automatisch wieder von Windows gestartet wird. Dies funktioniert aber leider nicht immer und gerade der DeltaMaster User merkt es dann, wenn das Repository nicht erreichbar ist, oder die Berichte nicht per Email wie gewohnt angekommen sind. In dem folgenden Artikel soll beschrieben werden wie unabhängig von dem Verhalten von Windows der Status des Dienstes kontrollieren und bei Nichtgefallen anpassen kann.

1.2 Voraussetzung

Um die in diesem Artikel beschrieben Funktionen nutzen zu können wird ein Dienstkonto für den SQL Agent (oder ein Proxy User) benötigt, welcher in der lokalen Administratorengruppe Mitglied ist.

1.3 Aufbau der Ausgangssituation

Auf dem Server ist der DeltaMaster 6 Service installiert, welcher die Grundlage für das Repository und damit auch für die Berichtsverteilung bildet, wenn die Berichtsjobs auf das Repository verweisen.


Abbildung 1 – DeltaMaster 6 Service

2 Aufbau der Lösung

2.1 Vergleich der unterschiedlichen Lösungsansätze

Um den Zustand des Service zu prüfen gibt es sicherlich verschiedene Ansätze wie etwa ausführen eines Power Shells Skriptes oder auch einrichten von einer zusätzlichen Software. Für diesen Artikel wurde sich für eine Mischung aus SQL Server Agent und Batchdateien entschieden, da hier ein geringer Aufwand für den Administrator vorliegt und sich der Aufruf reibungslos in die Ausführungsschritte wie etwa den Berichtsversand einbauen lässt.

2.2 Vorbereitung

2.2.1 Anlegen eines Dienstusers

Im regulären Fall ist die klare Empfehlung einen Active Directory Users zu nutzen. Sollte dies nicht möglich sein, so können wir natürlich auch auf dem lokalen Server einen User anlegen. Hierfür wird die „Lokale Benutzer und Gruppen“ – Konsole (lusrmgr.msc) genutzt.


Abbildung 2 – lusrmgr.msc

In dem Bereich Benutzer legen wir nun den User an, der für den SQL Agent als Proxy dienen wird.


Abbildung 3 – Anlegen eines neuen Benutzers

Nach dem Anlegen des Users fügen wir ihn noch in die lokale Administratorengruppe hinzu.


Abbildung 4 – Hinzufügen in die Administratoren Gruppe

2.2.2 Erstellen der Proxy Informationen

Als erstes müssen dem SQL Server die Login Informationen bekannt gemacht werden. Hierfür öffnen wir das SQL Server Management Studio, verbinden uns auf den Server und navigieren zu dem Punkt Sicherheit -> Anmeldeinformationen.


Abbildung 5 – Sicherheit auf dem SQL Server

Nun suchen wir den im vorherigen Schritt angelegten User heraus und fügen ihn hinzu.


Abbildung 6 – Anlegen von Anmeldeinformationen

Anschließend nutzen wir die gerade angelegten Sicherheitsinformationen und erstellen den Proxy User


Abbildung 7 – Anlegen eines Proxy Users


Abbildung 8 – Hinterlegen und Auswählen der Sicherheitsinformationen

2.3 Erstellen der Batchdateien

Für die Prüfung greifen wir auf eine Batchdatei zurück, welche in der Kommandozeile aufgerufen werden kann.

@Echo OFF
Set ServiceName = "DeltaMaster 6 Service"

SC queryex "DeltaMaster 6 Service" |Find "STATE"|Find /v "RUNNING">Nul&&(
        echo DeltaMaster 6 Service not running
        Net Start "DeltaMaster 6 Service"

 
     exit /b 0

)||(
        echo DeltaMaster 6 Service working
        exit /b 0
)

Dieser Quelltext kann direkt in einen Texteditor kopiert werden und als „Check DeltaMasterSer-vice.bat“ gespeichert werden.

Als Versuch führen wir die Batchdatei direkt in der Kommandozeile aus.


Abbildung 9 – Fehler beim Ausführen der Batchdatei

Wie erwartet erhalten wir eine Fehlermeldung, dass der Zugriff beim Starten des Service verweigert wurde. Hintergrund ist das Administratorenrechte für das Starten des Service von Nöten sind. Da Batchdateien leider nicht wie etwa eine .exe-Datei mit administrativen Rechten gestartet werden kann, müssen wir hier auf einen kleinen Trick in Windows zurückgreifen. Hierzu erstellen wir eine Verknüpfung auf die eben erstellte Batchdatei und teilen dieser mit, dass sie immer mit administrativen Rechten ausgeführt werden soll.


Abbildung 10 – Einrichten der administrativen Rechte

Ein weiterer Test über die Kommandozeile führt zu dem gewünschten Ergebnis.


Abbildung 11 – DeltaMaster Service Check

2.4 Einrichten des SQL Server Jobs

Innerhalb des letzten Schrittes legen wir nun noch einen SQL Agent Job an. Hier können wir die Batchdatei entweder mit dem Aufruf des Publishers kombinieren oder die Batchdatei einzeln aufrufen um den Betrieb des Repository sicherzustellen.

Für den aktuellen Fall habe ich mich für die Kombination aus Prüfung und Batchdatei entschieden.

Da der SQL Agent keine Verknüpfungen aufrufen kann, ist noch ein letzter Schritt mit einer Batchdatei notwendig. Hierfür legen wir noch eine zweite Batchdatei an, in welcher wir die Verknüpfung ausführen.

"U:\Public\Check DeltaMaster Service State\CheckDM.lnk"
exit /b 0

Nun speichern wir den Aufruf noch als „StartCheck.bat“ und legen den SQL Agent Job an:


Abbildung 12 – Anlegen des SQL Agent Jobs


Abbildung 13 – SQL Agent Einrichtung

2.5 Test

Zum Abschluss testen wir noch unseren neuen Ablauf:


Abbildung 14 – Test des SQL Agent Jobs

Meldung

Ausgeführt als Benutzer: “BC-WGN-LAP\DMServiceCheck“.

C:\WINDOWS\system32>“C:\Temp\Check\CheckDM.lnk“

DeltaMaster 6 Service not running

DeltaMaster 6 Service wird gestartet.

DeltaMaster 6 Service wurde erfolgreich gestartet.

C:\WINDOWS\system32>exit /b 0.

Prozessexitcode 0.

Der Schritt war erfolgreich.

Schreibe einen Kommentar