sp_add_job (Transact-SQL)

Anwendungsbereich: JaSQL Server (alle unterstützten Versionen) JaVerwaltete Azure SQL-Instanz

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

Symbol für Themenlink Transact-SQL-Syntaxkonventionen

Wichtig

In Azure SQL Managed Instance werden derzeit die meisten, aber nicht alle, SQL Server-Agent-Features unterstützt. Details dazu finden Sie unter T-SQL-Unterschiede zwischen Azure SQL Managed Instance und SQL Server.

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 nicht das Prozentzeichen ( % ) enthalten. job_name ist vom Typ nvarchar(128) und hat keinen Standardwert.

[ @enabled = ] enabled Gibt den Status des hinzugefügten Auftrags an. enabled ist tinyint, wobei der Standardwert 1 (aktiviert) ist. Bei 0 ist der Auftrag nicht aktiviert und wird nicht gemäß seinem Zeitplan ausgeführt. sie kann jedoch manuell ausgeführt werden.

[ @description = ] 'description' Die Beschreibung des Auftrags. description ist nvarchar(512) mit dem Standardwert NULL. Wenn description weggelassen wird, wird "Keine Beschreibung verfügbar" verwendet.

[ @start_step_id = ] step_id Die ID des ersten Schritts, der für den Auftrag ausgeführt werden soll. step_id ist int und hat den Standardwert 1.

[ @category_name = ] 'category' Die Kategorie für den Auftrag. category ist sysname mit dem Standardwert NULL.

[ @category_id = ] category_id Ein sprachunabhängiger Mechanismus zum Angeben einer Auftragskategorie. category_id ist vom Wert int und hat den Standardwert NULL.

[ @owner_login_name = ] 'login' Der Name der Anmeldung, die den Auftrag besitzt. login ist sysname mit dem Standardwert NULL, der als aktueller Anmeldename interpretiert wird. Nur Mitglieder der festen Serverrolle sysadmin können den Wert für @ owner_login_name festlegen oder ändern. Wenn Benutzer, die keine Mitglieder des Sysadmin-Rollensatzes sind oder den Wert von @ owner_login_name ändern, schlägt die Ausführung dieser gespeicherten Prozedur fehl, und es wird ein Fehler zurückgegeben.

[ @notify_level_eventlog = ] eventlog_levelEin -Wert, der angibt, wann ein Eintrag im Microsoft Windows Anwendungsprotokoll für diesen Auftrag gespeichert werden soll. eventlog_level ist vom Wert int und kann einer dieser Werte sein.

Wert BESCHREIBUNG
0 Nie
1 Bei Erfolg
2 (Standardwert) Bei Fehler
3 Always

[ @notify_level_email = ] email_level Ein -Wert, der angibt, wann nach Abschluss dieses Auftrags eine E-Mail gesendet werden soll. email_level ist int mit dem Standardwert 0, was nie angibt. email_level verwendet die gleichen Werte wie eventlog_level.

[ @notify_level_netsend = ] netsend_level Ein -Wert, der angibt, wann nach Abschluss dieses Auftrags eine Netzwerknachricht gesendet werden soll. netsend_level ist int mit dem Standardwert 0, was nie angibt. netsend_level verwendet die gleichen Werte wie eventlog_level.

[ @notify_level_page = ] page_level Ein -Wert, der angibt, wann nach Abschluss dieses Auftrags eine Seite gesendet werden soll. page_level ist int mit dem Standardwert 0, was nie angibt. page_level verwendet die gleichen Werte wie eventlog_level.

[ @notify_email_operator_name = ] 'email_name' Der E-Mail-Name der Person, an die eine E-Mail gesendet werden soll, wenn email_level erreicht ist. email_name ist sysname und hat den Standardwert NULL.

[ @notify_netsend_operator_name = ] 'netsend_name' Der Name des Operators, an den die Netzwerknachricht nach Abschluss dieses Auftrags gesendet wird. netsend_name ist sysname und hat den Standardwert NULL.

[ @notify_page_operator_name = ] 'page_name' Der Name der Person, die nach Abschluss dieses Auftrags angezeigt werden soll. page_name ist sysname und hat den Standardwert NULL.

[ @delete_level = ] delete_level Ein -Wert, der angibt, wann der Auftrag gelöscht werden soll. delete_value int ist, mit dem Standardwert 0, was bedeutet, dass nie. delete_level verwendet die gleichen Werte wie eventlog_level.

Hinweis

Wenn delete_level gleich 3 ist, wird der Auftrag unabhängig von den für den Auftrag definierten Zeitplänen nur einmal ausgeführt. 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 ist, wenn er erfolgreich erstellt wurde. job_id ist eine Ausgabevariable vom Typ uniqueidentifier mit dem Standardwert NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler)

Resultsets

Keine

Bemerkungen

@ originating_server ist in sp_add_job vorhanden, aber nicht unter Argumente aufgeführt. @ originating_server ist für die interne Verwendung reserviert.

Nachdem sp_add_job ausgeführt wurde, um einen Auftrag hinzuzufügen, können sp_add_jobstep verwendet werden, um Schritte hinzuzufügen, die die Aktivitäten für den Auftrag ausführen. sp_add_jobschedule können verwendet werden, um den Zeitplan zu erstellen, den der SQL Server -Agent-Dienst zum Ausführen des Auftrags verwendet. Verwenden Sie sp_add_jobserver, um die SQL Server Instanz festzulegen, in der der Auftrag ausgeführt wird, und sp_delete_jobserver, um den Auftrag aus der Instanz zu SQL Server 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. Verwenden Sie sp_remove_job_from_targets, um Aufträge von Zielservern oder Zielservergruppen zu entfernen.

SQL Server Management Studio können Aufträge problemlos mithilfe einer grafischen Oberfläche verwaltet werden. Dies ist die empfohlene Vorgehensweise für die Erstellung und Verwaltung der Auftragsinfrastruktur.

Berechtigungen

Um diese gespeicherte Prozedur auszuführen, müssen Benutzer Mitglied der festen Serverrolle sysadmin sein oder einer der folgenden festen Datenbankrollen des -Agents zugewiesen SQL Server werden, die sich in der msdb-Datenbank befinden:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

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

Nur Mitglieder der festen Serverrolle sysadmin können den Wert für @ owner_login_name festlegen oder ändern. Wenn Benutzer, die keine Mitglieder des Sysadmin-Rollensatzes sind oder den Wert von @ owner_login_name ä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.

Hinweis

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  

Weitere Informationen

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)