Suchen...
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

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 automatisiert wieder zu starten. Hierfür werden einfache Grundfunktionalitäten von Windows eingesetzt, so dass keine zusätzlichen Programme notwendig sind.

Grundherausforderung

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 diesem Artikel wird beschrieben, wie unabhängig von dem Verhalten von Windows der Status des Dienstes kontrolliert und bei Nichtgefallen angepasst werden kann.

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 Mitglied in der lokalen Administratorengruppe ist.

Aufbau der Ausgangssituation

Auf dem Server ist 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

Aufbau der Lösung

Vergleich der unterschiedlichen Lösungsansätze

Um den Zustand des Service zu prüfen, gibt es sicherlich verschiedene Ansätze wie etwa das Ausführen eines Power Shells Skriptes oder auch das Einrichten 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.

Vorbereitung

Anlegen eines Dienstusers

Im regulären Fall ist die klare Empfehlung einen Active Directory User 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

Im 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

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

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 DeltaMasterService.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, dass 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 können, 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.

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 wird die Kombination aus Prüfung und Batchdatei verwendet.

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

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.