Wenn du einen SQL Server Agent Job erstellen möchtest, kannst du wiederkehrende Prüfungen und andere Aufgaben automatisieren. In dieser Anleitung richtest du in SQL Server Management Studio (SSMS) einen ungefährlichen Prüfjob ein. Er kontrolliert, ob eine Datenbank vorhanden und online ist, läuft nach einem Zeitplan und kann bei einem Fehler eine E-Mail senden.

Die folgenden Schritte gelten für SQL Server-Editionen mit SQL Server Agent. Für SQL Server Express findest du weiter unten eine passende Alternative.

Was ist ein SQL Server Agent Job?

Ein Job ist eine Aufgabe, die aus einem oder mehreren Schritten besteht. SQL Server Agent kann diese Schritte manuell, nach einem Zeitplan oder als Reaktion auf ein Ereignis ausführen. Ein Schritt kann zum Beispiel ein T-SQL-Skript starten. Der Job speichert Informationen über seine Ausführung in der Jobhistorie.

In dieser Anleitung besteht der Beispieljob aus zwei T-SQL-Schritten:

  • Datenbank prüfen: Der erste Schritt kontrolliert, ob die angegebene Datenbank existiert und online ist.
  • Ergebnis protokollieren: Wenn die Prüfung erfolgreich war, hält der zweite Schritt eine kurze Meldung mit Zeitpunkt fest.

Der Job verändert keine Daten. Wird die Datenbank nicht gefunden oder ist sie nicht online, meldet der erste Schritt einen Fehler. So lässt sich auch die Fehlerbehandlung testen.

Voraussetzungen prüfen

Bevor du den Job anlegst, sollten diese Voraussetzungen erfüllt sein:

  • SSMS ist installiert und du bist mit der richtigen SQL Server-Instanz verbunden.
  • Die verwendete SQL Server-Edition enthält SQL Server Agent.
  • Der SQL Server Agent-Dienst ist gestartet. Für geplante Ausführungen muss der Dienst während des Ausführungszeitpunkts laufen.
  • Dein Benutzerkonto hat die nötigen Rechte zum Erstellen und Verwalten von Agent-Jobs.

Prüfe in SSMS den Bereich SQL Server Agent im Objekt-Explorer. Ist der Dienst vorhanden, aber gestoppt, kannst du ihn dort per Rechtsklick starten. Für einen dauerhaft geplanten Job sollte der Dienst beim Serverstart automatisch starten. SSMS selbst muss während der Ausführung nicht geöffnet sein.

SQL Server Agent Job erstellen: Grundeinstellungen

  1. Öffne in SSMS den Objekt-Explorer und verbinde dich mit deiner SQL Server-Instanz.
  2. Erweitere den Knoten SQL Server Agent.
  3. Klicke mit der rechten Maustaste auf Jobs und wähle Neuer Auftrag beziehungsweise New Job.
  4. Gib auf der Seite Allgemein einen aussagekräftigen Namen ein, zum Beispiel DemoDB – Online-Status prüfen.
  5. Ergänze eine Beschreibung, etwa „Prüft täglich, ob die Datenbank DemoDB online ist“.
  6. Prüfe den Auftragseigentümer. Er braucht nur die Rechte, die für die Prüfung erforderlich sind. Verwende nach Möglichkeit kein dauerhaft überprivilegiertes Konto.
  7. Lasse den Auftrag aktiviert, wenn du ihn nach dem Einrichten verwenden möchtest.

Die genaue Bezeichnung einzelner Menüpunkte kann je nach SSMS-Version leicht abweichen.

Schritte für den Prüfjob anlegen

Wechsle in den Auftragseigenschaften zu Schritte und wähle Neu. Wähle als Typ Transact-SQL-Skript (T-SQL). Stelle als Datenbank master ein und füge den folgenden Code ein. Ersetze DemoDB durch den Namen einer Datenbank, die auf deiner Instanz vorhanden ist.

Schritt 1: Datenbank auf Existenz und Status prüfen

DECLARE @DatabaseName sysname = N'DemoDB';
DECLARE @ErrorMessage nvarchar(2048);

IF DB_ID(@DatabaseName) IS NULL
BEGIN
    SET @ErrorMessage = CONCAT(
        N'Die Datenbank ',
        QUOTENAME(@DatabaseName),
        N' wurde nicht gefunden.'
    );

    THROW 51001, @ErrorMessage, 1;
END;

IF NOT EXISTS
(
    SELECT 1
    FROM sys.databases
    WHERE name = @DatabaseName
      AND state_desc = N'ONLINE'
)
BEGIN
    SET @ErrorMessage = CONCAT(
        N'Die Datenbank ',
        QUOTENAME(@DatabaseName),
        N' ist nicht online.'
    );

    THROW 51002, @ErrorMessage, 1;
END;

PRINT CONCAT(
    N'Prüfung erfolgreich: ',
    QUOTENAME(@DatabaseName),
    N' ist online.'
);

THROW beendet den Schritt mit einem Fehler, wenn die Datenbank nicht existiert oder nicht online ist. Die Fehlermeldung kann anschließend in der Jobhistorie geprüft werden. Der Schritt liest lediglich den Datenbankstatus aus.

Schritt 2: erfolgreiche Prüfung protokollieren

Füge einen zweiten Schritt hinzu. Nenne ihn zum Beispiel Ergebnis protokollieren, wähle ebenfalls den Typ Transact-SQL-Skript (T-SQL) und verwende master als Datenbank.

DECLARE @DatabaseName sysname = N'DemoDB';

PRINT CONCAT(
    N'Prüfung abgeschlossen: ',
    QUOTENAME(@DatabaseName),
    N' ist online. Zeitpunkt: ',
    CONVERT(nvarchar(19), SYSDATETIME(), 120)
);

Der zweite Schritt wird nur erreicht, wenn der erste erfolgreich war. Wenn du die Ausgabe eines Schritts dauerhaft nachvollziehen möchtest, öffne dessen Seite Erweitert und aktiviere In Tabelle protokollieren. Die Auftragsübersicht zeigt den Ausführungsstatus; sie ersetzt kein interaktives Abfragefenster.

Fehlerbehandlung und Ablauf der Schritte einstellen

Öffne in den Auftragseigenschaften den ersten Schritt und wechsle auf Erweitert. Lege den Ablauf fest:

  • Bei Erfolg: Mit dem nächsten Schritt fortfahren.
  • Bei Fehler: Auftrag beenden und als fehlgeschlagen melden.
  • Wiederholungsversuche: Für diese Statusprüfung zunächst 0. Bei vorübergehenden Fehlern, etwa einer kurzzeitigen Netzwerkstörung, können Wiederholungen sinnvoll sein. Bei einem dauerhaft falschen Datenbanknamen würden sie den Fehler dagegen nicht beheben.

Stelle beim zweiten Schritt ein, dass der Auftrag bei Erfolg als erfolgreich beendet wird. Auch bei diesem Schritt sollte ein Fehler den Auftrag als fehlgeschlagen beenden. Kontrolliere die Einstellungen für jeden Schritt einzeln.

SQL Server Agent bietet auf der Seite Erweitert außerdem Optionen, um Wiederholungsversuche und Ausgaben zu konfigurieren. Die Erfolg- und Fehleraktion bestimmt, ob der nächste Schritt ausgeführt oder der Auftrag beendet wird.

Zeitplan für den Job einrichten

  1. Wähle in den Auftragseigenschaften die Seite Zeitpläne und klicke auf Neu.
  2. Vergib einen Namen, zum Beispiel Tägliche Prüfung um 06:00 Uhr.
  3. Wähle als Zeitplantyp Wiederkehrend.
  4. Stelle unter Häufigkeit die gewünschte Wiederholung ein, zum Beispiel täglich.
  5. Lege unter Tägliche Häufigkeit eine Uhrzeit fest, zum Beispiel 06:00 Uhr.
  6. Prüfe das Startdatum und lasse den Zeitplan aktiviert.
  7. Speichere den Zeitplan und anschließend den Auftrag.

Die Uhrzeit richtet sich nach der lokalen Zeit des Servers. Ein geplanter Auftrag kann nur laufen, wenn SQL Server Agent und die Instanz verfügbar sind. Ein ausgeschalteter Server führt den Job nicht zum vorgesehenen Zeitpunkt aus.

E-Mail-Benachrichtigung bei Fehlern einrichten

Damit SQL Server Agent E-Mails senden kann, müssen Database Mail und ein Operator eingerichtet sein. Ein Operator enthält die Kontaktdaten für Benachrichtigungen.

  1. Richte Database Mail in SSMS ein und prüfe, ob der Mailversand funktioniert.
  2. Öffne die Eigenschaften von SQL Server Agent, wechsle zu Warnsystem beziehungsweise Alert System und aktiviere das E-Mail-Profil. Wähle Database Mail und das passende Profil aus.
  3. Falls SSMS nach einer Dienstneustart-Aktion verlangt, starte SQL Server Agent nach der Änderung neu.
  4. Erweitere den Knoten SQL Server Agent, klicke mit der rechten Maustaste auf Operatoren und erstelle einen Operator mit einer gültigen E-Mail-Adresse.
  5. Öffne die Eigenschaften deines Jobs und gehe zu Benachrichtigungen.
  6. Wähle den Operator und die Benachrichtigung Bei Fehler. Für einen Prüfjob ist eine Nachricht bei jedem erfolgreichen Lauf meist unnötig.
  7. Speichere den Auftrag und sende eine Test-E-Mail, bevor du dich auf die Benachrichtigung verlässt.

Ein eingerichteter Operator allein genügt nicht: SQL Server Agent muss ein funktionierendes Database-Mail-Profil verwenden. Wenn keine E-Mail ankommt, prüfe zuerst das Mailprofil, die Adresse des Operators und den Benachrichtigungszeitpunkt am Job.

Job manuell starten und Ausführung prüfen

Nach dem Speichern kannst du den Job direkt testen. Öffne SQL Server Agent > Jobs, klicke mit der rechten Maustaste auf den Auftrag und wähle Auftrag am Schritt starten. Starte die Ausführung beim ersten Test mit Schritt 1.

Öffne anschließend per Rechtsklick auf den Job die Historie anzeigen-Ansicht. Dort findest du unter anderem Startzeit, Dauer, Ergebnis und Meldungen der einzelnen Schritte. Ein grünes Symbol steht für einen erfolgreichen Lauf, ein rotes für einen fehlgeschlagenen Lauf. Aktualisiere die Ansicht, wenn der Job noch läuft oder der Eintrag noch nicht angezeigt wird.

Die Jobhistorie lässt sich auch mit einer gespeicherten Prozedur anzeigen:

EXEC msdb.dbo.sp_help_jobhistory
    @job_name = N'DemoDB – Online-Status prüfen';

Für den aktuellen Ausführungsstatus verwendest du den Jobaktivitätsmonitor. Klicke im Objekt-Explorer mit der rechten Maustaste auf SQL Server Agent und wähle Jobaktivitätsmonitor anzeigen. Dort kannst du den aktuellen Status, den letzten Lauf und – abhängig von deinen Rechten – den nächsten geplanten Lauf sehen. Aktualisiere die Ansicht bei Bedarf.

Wenn kein Lauf in der Historie erscheint, prüfe, ob der Job aktiviert ist, ein Zeitplan zugeordnet wurde und SQL Server Agent zum geplanten Zeitpunkt lief. Die Jobhistorie zeigt abgeschlossene Ausführungen; für einen gerade laufenden Auftrag ist der Jobaktivitätsmonitor die passendere Ansicht.

Was bei SQL Server Express anders ist

SQL Server Express enthält SQL Server Agent nicht. Deshalb lassen sich dort keine Agent-Jobs, Agent-Zeitpläne oder Agent-Benachrichtigungen wie in den Editionen mit Agent einrichten. Das gilt auch dann, wenn SSMS installiert ist: SSMS kann Express-Instanzen verwalten, bringt den fehlenden Agent-Dienst aber nicht mit.

Für wiederkehrende Aufgaben kannst du stattdessen die Windows-Aufgabenplanung verwenden. Sie startet zum Beispiel ein T-SQL-Skript mit dem Kommandozeilenprogramm sqlcmd oder ruft ein PowerShell-Skript auf. Achte dabei auf ein geeignetes Windows-Konto, sichere Zugangsdaten und eine nachvollziehbare Protokollierung. E-Mail-Benachrichtigungen musst du bei dieser Lösung separat einrichten.

Wenn du SQL Server Express verwendest und regelmäßige Prüfungen oder Backups automatisieren möchtest, plane die Aufgaben deshalb über die Windows-Aufgabenplanung. Eine Anleitung zur Automatisierung von Backups mit Express bietet auch Microsoft in der Dokumentation zu SQL Server Express und der Windows-Aufgabenplanung.

Häufige Fragen zu SQL Server Agent Jobs

Läuft der Job, wenn SSMS geschlossen ist?

Ja. SQL Server Agent führt aktivierte Jobs unabhängig von SSMS aus. Der Agent-Dienst und die SQL Server-Instanz müssen dafür verfügbar sein.

Warum wird mein Zeitplan nicht ausgeführt?

Prüfe, ob der Job und sein Zeitplan aktiviert sind, der Zeitplan dem richtigen Job zugeordnet wurde und der SQL Server Agent-Dienst läuft. Kontrolliere außerdem Startdatum und Uhrzeit des Servers.

Wie teste ich die Fehlerbenachrichtigung?

Teste zuerst Database Mail separat. Für einen kontrollierten Fehlertest kannst du einen eigenen temporären Testjob mit einem absichtlich fehlschlagenden T-SQL-Schritt und einer Fehlerbenachrichtigung anlegen. Führe ihn manuell aus und entferne den Testjob anschließend wieder. Verwende den absichtlich fehlschlagenden Schritt nicht im produktiven Prüfjob.

Weiterführende Artikel

Mit einem klar benannten SQL Server Agent Job, getrennten Schritten und einem passenden Zeitplan lässt sich eine wiederkehrende Prüfung zuverlässig nachvollziehen. Achte besonders auf den Status des Agent-Dienstes, die Jobhistorie und einen getesteten Benachrichtigungsweg.

Werbung / Affiliate-Links: Die mit einem Sternchen (*) gekennzeichneten Links sind Amazon-Partnerlinks. Wenn du darüber etwas kaufst, erhalte ich möglicherweise eine Provision. Für dich entstehen dadurch keine zusätzlichen Kosten. Als Amazon-Partner verdiene ich an qualifizierten Verkäufen.