Share via


sp_add_job (Transact-SQL)

Fügt einen neuen Auftrag hinzu, der vom SQLServerAgent-Dienst ausgeführt wird.

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

Syntax

sp_add_job [ @job_name = ] 'job_name'
     [ , [ @enabled = ] enabled ] 
     [ , [ @description = ] 'description' ] 
     [ , [ @start_step_id = ] step_id ] 
     [ , [ @category_name = ] 'category' ] 
     [ , [ @category_id = ] category_id ] 
     [ , [ @owner_login_name = ] 'login' ] 
     [ , [ @notify_level_eventlog = ] eventlog_level ] 
     [ , [ @notify_level_email = ] email_level ] 
     [ , [ @notify_level_netsend = ] netsend_level ] 
     [ , [ @notify_level_page = ] page_level ] 
     [ , [ @notify_email_operator_name = ] 'email_name' ] 
          [ , [ @notify_netsend_operator_name = ] 'netsend_name' ] 
     [ , [ @notify_page_operator_name = ] 'page_name' ] 
     [ , [ @delete_level = ] delete_level ] 
     [ , [ @job_id = ] job_id OUTPUT ] 

Argumente

  • [ @job_name = ] 'job_name'
    Der Name des Auftrags. Der Name muss eindeutig sein und darf kein Prozentzeichen (%) enthalten. job_nameist vom Datentyp nvarchar(128) und hat keinen Standardwert.

  • [ @enabled = ] enabled
    Gibt den Status des hinzugefügten Auftrags an. enabledist vom Datentyp tinyint. Der Standardwert ist 1 (aktiviert). Bei 0 ist der Auftrag nicht aktiviert und wird nicht wie geplant ausgeführt, er kann jedoch manuell ausgeführt werden.

  • [ @description = ] 'description'
    Die Beschreibung des Auftrags. description ist vom Datentyp nvarchar(512). Der Standardwert ist NULL. Wenn description nicht angegeben wird, wird "Keine Beschreibung verfügbar" verwendet.

  • [ @start_step_id = ] step_id
    Die ID des ersten Schritts zum Ausführen des Auftrags. step_idist vom Datentyp int. Der Standardwert ist 1.

  • [ @category_name = ] 'category'
    Die Kategorie für den Auftrag. categoryist vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @category_id = ] category_id
    Ein sprachenunabhängiger Mechanismus zum Angeben einer Auftragskategorie. category_idist vom Datentyp int. Der Standardwert ist NULL.

  • [ @owner_login_name = ] 'login'
    Der Name der Anmeldung, die im Besitz des Auftrags ist. loginist vom Datentyp sysname. Der Standardwert NULL wird als der aktuelle Anmeldename interpretiert. Nur Mitglieder der festen Serverrolle sysadmin können den Wert für @owner_login_name festlegen oder ändern. Wenn Benutzer, die nicht Mitglieder der festen Serverrolle sysadmin sind, den Wert für @owner_login_name festlegen oder ändern, schlägt die Ausführung dieser gespeicherten Prozedur fehl, und es wird ein Fehler zurückgegeben.

  • [ @notify_level_eventlog = ] eventlog_level
    Ein Wert, der angibt, wann im Microsoft Windows-Anwendungsprotokoll ein Eintrag für diesen Auftrag hinzugefügt werden soll. eventlog_levelist int. Die folgenden Werte sind möglich:

    Wert

    Beschreibung

    0

    Never

    1

    Bei Erfolg

    2 (Standard)

    Bei Fehler

    3

    Always

  • [ @notify_level_email = ] email_level
    Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine E-Mail gesendet werden soll. email_levelist vom Datentyp int. Der Standardwert ist 0 und gibt an, dass niemals eine E-Mail gesendet werden soll. Für email_levelwerden die gleichen Werte wie für eventlog_level verwendet.

  • [ @notify_level_netsend = ] netsend_level
    Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine Netzwerknachricht gesendet werden soll. netsend_levelist vom Datentyp int. Der Standardwert ist 0 und gibt an, dass niemals eine Netzwerknachricht gesendet werden soll. Für netsend_level werden die gleichen Werte wie für eventlog_level verwendet.

  • [ @notify_level_page = ] page_level
    Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine Pagernachricht gesendet werden soll. page_levelist vom Datentyp int. Der Standardwert ist 0 und gibt an, dass niemals eine Pagernachricht gesendet werden soll. Für page_levelwerden die gleichen Werte wie für eventlog_level verwendet.

  • [ @notify_email_operator_name = ] 'email_name'
    Der E-Mail-Name der Person, an die bei Erreichen von email_level eine E-Mail gesendet werden soll. email_name ist vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @notify_netsend_operator_name = ] 'netsend_name'
    Der Name des Operators, an den nach dem Abschluss dieses Auftrags die Netzwerknachricht gesendet wird. netsend_nameist vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @notify_page_operator_name = ] 'page_name'
    Der Name der Person, die nach dem Abschluss dieses Auftrags per Pager benachrichtigt werden soll. page_nameist vom Datentyp sysname. Der Standardwert ist NULL.

  • [ @delete_level = ] delete_level
    Ein Wert, der angibt, wann der Auftrag gelöscht werden soll. delete_valueist vom Datentyp int. Der Standardwert 0 gibt an, dass der Auftrag niemals gelöscht wird. Für delete_levelwerden die gleichen Werte wie für eventlog_level verwendet.

    HinweisHinweis

    Wenn delete_level den Wert 3 hat, wird der Auftrag nur einmal ausgeführt, unabhängig von für den Auftrag definierten Zeitplänen. Darüber hinaus wird, wenn sich ein Auftrag selbst löscht, auch der gesamte Verlauf für diesen Auftrag gelöscht.

  • [ @job_id = ] job_idOUTPUT
    Die Auftrags-ID, die dem Auftrag zugewiesen wird, wenn er erfolgreich erstellt wurde. job_idist eine Ausgabevariable vom Typ uniqueidentifier. Der Standardwert ist NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Keine

Hinweise

@originating_server gehört ebenfalls zu sp_add_job, wird jedoch nicht unter den Argumenten aufgeführt. @originating_server ist für die interne Verwendung reserviert.

Nachdem zum Hinzufügen eines Auftrags sp_add_job ausgeführt wurde, können mit sp_add_jobstep Schritte zum Ausführen der Aktivitäten für den Auftrag hinzugefügt werden. Mit sp_add_jobschedule lässt sich der Zeitplan erstellen, mit dem der SQL Server-Agent-Dienst den Auftrag ausführt. Verwenden Sie sp_add_jobserver, um die SQL Server-Instanz für die Auftragsausführung festzulegen, und sp_delete_jobserver, um den Auftrag von der SQL Server-Instanz zu entfernen.

Wenn der Auftrag auf einem oder mehreren Zielservern in einer Multiserverumgebung ausgeführt wird, verwenden Sie sp_apply_job_to_targets, um die Zielserver oder Zielservergruppen für den Auftrag festzulegen. Zum Entfernen von Aufträgen von Zielservern oder Zielservergruppen verwenden Sie sp_remove_job_from_targets.

Mit SQL Server Management Studio können Aufträge problemlos mithilfe einer grafischen Oberfläche verwaltet werden. Dies ist die empfohlene Vorgehensweise, um die Auftragsinfrastruktur zu erstellen und zu verwalten.

Berechtigungen

Zum Ausführen dieser gespeicherten Prozedur müssen Benutzer Mitglieder der festen Serverrolle sysadmin oder Mitglieder einer der folgenden festen SQL Server-Agent-Datenbankrollen sein, die sich in der msdb-Datenbank befinden:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Informationen zu den einzelnen Berechtigungen, die jeder dieser festen Datenbankrollen zugeordnet sind, finden Sie unter Feste Datenbankrollen des SQL Server-Agents.

Nur Mitglieder der festen Serverrolle sysadmin können den Wert für @owner_login_name festlegen oder ändern. Wenn Benutzer, die nicht Mitglieder der festen Serverrolle sysadmin sind, den Wert für @owner_login_name festlegen oder ändern, schlägt die Ausführung dieser gespeicherten Prozedur fehl, und es wird ein Fehler zurückgegeben.

Beispiele

A.Hinzufügen eines Auftrags

Im folgenden Beispiel wird ein neuer Auftrag mit dem Namen NightlyBackups hinzugefügt.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'NightlyBackups' ;
GO

B.Hinzufügen eines Auftrags mit Pager-, E-Mail- und NET SEND-Informationen

Im folgenden Beispiel wird der Auftrag Ad hoc Sales Data Backup erstellt, mit dem François Ajenstat (per Pager, E-Mail oder Netzwerk-Popupnachricht) benachrichtigt wird, falls der Auftrag einen Fehler erzeugt. Wenn der Auftrag erfolgreich ausgeführt wurde, wird er gelöscht.

HinweisHinweis

Im Rahmen dieses Beispiels wird davon ausgegangen, dass der Operator François Ajenstat und der Anmeldename françoisa bereits vorhanden sind.

USE msdb ;
GO

EXEC dbo.sp_add_job
    @job_name = N'Ad hoc Sales Data Backup', 
    @enabled = 1,
    @description = N'Ad hoc backup of sales data',
    @owner_login_name = N'françoisa',
    @notify_level_eventlog = 2,
    @notify_level_email = 2,
    @notify_level_netsend = 2,
    @notify_level_page = 2,
    @notify_email_operator_name = N'François Ajenstat',
    @notify_netsend_operator_name = N'François Ajenstat', 
    @notify_page_operator_name = N'François Ajenstat',
    @delete_level = 1 ;
GO

Siehe auch

Verweis

sp_add_schedule (Transact-SQL)

sp_add_jobstep (Transact-SQL)

sp_add_jobserver (Transact-SQL)

sp_apply_job_to_targets (Transact-SQL)

sp_delete_job (Transact-SQL)

sp_delete_jobserver (Transact-SQL)

sp_remove_job_from_targets (Transact-SQL)

sp_help_job (Transact-SQL)

sp_help_jobstep (Transact-SQL)

sp_update_job (Transact-SQL)

Gespeicherte Systemprozeduren (Transact-SQL)