SQL Server Agent

Eintrag zuletzt aktualisiert am: 24.05.2022

Der SQL Server Agent ist der Zeitplandienst/Scheduler innerhalb der Microsoft SQL Servers, mit dem nicht nur regelmässige Wartungsaufgaben im SQL Server, sondern beliebige wiederkehrende Aufgaben in Windows ausgeführt werden können.

Details

Der SQL Server Agent erlaubt die Definition von Jobs, die aus (mehreren) Job Steps bestehen. Jeder Job Step kann unter einer eigenen Windows-Identität laufen. Die Jobs können manuell oder in regelmäßigen Intervallen gestartet werden.

Einsatzgebiete des Server-Agents sind:
  • die Durchführung von regelmäßigen Wartungsaufgaben,
  • unbeaufsichtigte Ausführung von (einmaligen) Aufgaben,
  • automatische Reaktion auf Fehlerzustände (Alerts).

Der bietet gegenüber den normalen Windows-Zeitplandienst folgende Vorteile:
  • Start von Jobs durch Fehlerereignisse (Alerts) (in Windows erst ab Windows Vista)
  • einen integrierten Benachrichtigungsdienst,
  • mehrere Schedules zu einer Aufgabe (in Windows erst ab Windows 98)

Der SQL Server-Agent ist ein Teil des Microsoft SQL Servers, der als eigenständiger Windows Windows-Dienst läuft. Der Server-Agent findet sich im SQL Server Enterprise Manager unter Management/SQL Server-Agent (gilt für MSSQL 7.0 und 2000). In der Version 2005 heißt die Verwaltungsoberfläche SQL Server Management Studio. Hier befindet sich der SQL Server Agent direkt unterhalb des Wurzel eines Servers.

Der Server-Agent verwendet folgende Begriffe:
  • Ein Auftrag (Job) ist eine Folge von Befehlsschritten (Job Steps).
  • Eine Warnung (Alert) ist eine Fehlerüberwachung, die auf eine bestimmte Art von Fehlern achtet. Wenn der Fehler eintritt, dann wird der Alert ausgelöst. In der Folge eines Alert wird ein Job gestartet oder eine Benachrichtigung an einen Operator gesendet.
  • Ein Operator ist eine Person, die benachrichtigt werden soll.
  • Eine Benachrichtigung (Notification) definiert eine Nachricht an einen Operator.
  • Ein Terminplan (Schedule) definiert Zeitpunkte, zu denen ein Job automatisch gestartet werden soll.

Ein Operator wird definiert über seinen Namen und bis zu drei verschiedene Möglichkeiten, den Operator zu unterrichten: per E-Mail, per Pager oder per Net Send-Befehl.

Definition von Aufträgen

Zentrales Instrument im Server-Agent sind Jobs. Ein Job ist eine Sammlung von Aktionen, die zusammen ausgeführt werden sollen. Ein Server-Agent Job besteht aus einem oder mehreren Job Steps. Ein Job Step ist nicht ein einzelner Befehl; vielmehr ist jeder Job Step eine eigenständige Routine mit einer Abfolge von Befehlen. Ein Job Step kann in Transaction SQL, ActiveX Script (Active Scripting) oder einem Befehl für die Windows-Kommandozeile geschrieben sein. Zusätzlich gibt es vier Typen von Replikationskommandos, die hier nicht näher betrachtet werden sollen.

Die Job Steps werden im Normalfall sequenziell ausgeführt. Beim Start eines Jobs werden die Job Steps in der definierten Reihenfolge abgearbeitet. Die Reihenfolge kann aber jederzeit verändert werden. Sie können jedoch einen (kleinen) Workflow modellieren, da zu jedem Job Step festgelegt werden kann, was im Erfolgs- bzw. Fehlerfall passieren soll. Dabei gibt es vier Möglichkeiten:
Ende des Jobs mit Fehlermeldung
Ende des Jobs mit Erfolgsmeldung
Weiter mit nächstem Job Step

Bei der termingeplanten Ausführung beginnt der Job bei dem mit einem Fähnchen markierten Job Step. Beim manuellen Start des Jobs würde der Enterprise Manager nachfragen, wo begonnen werden soll. Die Einstellungen „Bei Erfolg“ und „Bei Fehler“ definieren das Vorgehen nach dem Ende eines Job Step.

Ein Job kann auf vier Arten gestartet werden:
manuell über den Enterprise Manager durch den Befehl Start Job aus dem Kontextmenü des Eintrags Jobs,
durch einen Schedule,
durch einen Alert,
durch ein externes Programm über die SQL Distributed Management Objects (DMO).

Die manuelle Ausführung eines Jobs ist ein asynchroner Vorgang. Der Enterprise Manager wartet nicht auf das Ende der Ausführung des Script. Sie können direkt weiterarbeiten. Über den Status der Ausführung werden Sie allerdings nur über die Spalten in der Job-Liste informiert.

Schedules und Alerts werden in den Eigenschaften des Jobs im Reiter Schedule definiert. Dabei können zu jedem Job mehrere Schedules und mehrere Alerts definiert werden.
Die Registerkarte Terminpläne eines Jobs zeigt nicht nur Termine, sondern Warnungen, die diesen Job auslösen. Der Job soll jeden Tag um 16.00 Uhr gestartet werden oder wenn es zu einem Speichermangel kommt. Es kann beliebig viele Termine und Warnungen zu einem Job geben.

Ein Schedule besitzt eine der vier folgenden Startoptionen:
Einmalige Ausführung an einem bestimmten Tag zu einer bestimmten Uhrzeit
Wiederkehrende Ausführung im Minuten-, Stunden-, Tages-, Wochen- oder Monatsrhythmus, wobei Tag und Uhrzeit der ersten und der letzten Ausführung festgelegt werden können
Automatischer Start des Jobs beim Start des Server-Agents
Start des Jobs, sobald die CPU nicht beschäftigt ist

Ebenso kann eine Warnung (Alert) definiert werden. Über Neue Warnung in der Registerkarte Terminpläne gelangen Sie zum gleichen Eigenschaftenfenster, das Sie erhalten, wenn Sie im Enterprise Manager im Kontextmenü des Asts Warnungen den Punkt Neue Warnung wählen.

Hinsichtlich der Bindung eines Alert an einen Job gibt es zwei identische Vorgehensweisen: Ein und dasselbe Ergebnis kann sowohl aus dem Eigenschaftenfenster eines Alert als auch aus dem Eigenschaftenfenster eines Jobs heraus erreicht werden.

Für die Benachrichtigung über E-Mail, Pager oder den DOS-Befehl Net Send bedarf es der Definition eines so genannten Operators innerhalb des Agent. Bei allen fünf Notifikationstypen besteht die Möglichkeit, zwischen drei Bedingungen zu wählen:
Benachrichtigung, wenn der Job erfolgreich beendet wurde
Benachrichtigung, wenn der Job einen Fehler meldete
Benachrichtigung in jedem Fall nach Beendigung des Jobs