sp_add_job (Transact-SQL)

Gilt für:SQL ServerAzure SQL Managed Instance

Erstellt einen neuen Auftrag, der vom SQL Server-Agent-Dienst ausgeführt wird.

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 = ] N'job_name'
     [ , [ @enabled = ] enabled ]
     [ , [ @description = ] N'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

Der Name des Auftrags. Der Name muss eindeutig sein und darf das Prozentzeichen (%) nicht enthalten. @job_name ist nvarchar(128), ohne Standard. Erforderlich.

@enabled

Gibt den Status des hinzugefügten Auftrags an. "enabled " ist "tinyint" mit einem Standardwert von 1 (aktiviert). Wenn 0der Auftrag nicht aktiviert ist und nicht gemäß seinem Zeitplan ausgeführt wird, kann er jedoch manuell ausgeführt werden.

@description

Die Beschreibung des Auftrags. @description ist nvarchar(512), mit einem Standardwert von NULL. Wenn @description weggelassen wird, N'No description available' wird verwendet.

@start_step_id

Die ID des ersten Schritts zum Ausführen des Auftrags. @start_step_id ist int, mit einem Standardwert von 1.

@category_name

Die Kategorie für den Auftrag. @category_name ist "sysname" mit der Standardeinstellung "NULL.

@category_id

Ein sprachenunabhängiger Mechanismus zum Angeben einer Auftragskategorie. @category_id ist int, mit einem Standardwert von NULL.

@owner_login_name

Der Name der Anmeldung, die im Besitz des Auftrags ist. @owner_login_name 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 ein Fehler wird zurückgegeben.

@notify_level_eventlog

Ein Wert, der angibt, wann im Microsoft Windows-Anwendungsprotokoll ein Eintrag für diesen Auftrag hinzugefügt werden soll. @notify_level_eventlog ist int und kann eine der folgenden Werte sein:

Wert BESCHREIBUNG
0 Never
1 Bei Erfolg
2 (Standard) Bei Fehler
3 Always

@notify_level_email

Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine E-Mail gesendet werden soll. @notify_level_email ist int, mit einem Standardwert von 0, der niemals angibt. @notify_level_email verwendet dieselben Werte wie @notify_level_eventlog.

@notify_level_netsend

Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine Netzwerknachricht gesendet werden soll. @notify_level_netsend ist int mit einem Standardwert von 0, der niemals angibt. @notify_level_netsend verwendet dieselben Werte wie @notify_level_eventlog.

@notify_level_page

Ein Wert, der angibt, wann nach dem Abschluss dieses Auftrags eine Pagernachricht gesendet werden soll. @notify_level_page ist int, mit einem Standardwert von 0, der niemals angibt. @notify_level_page verwendet dieselben Werte wie @notify_level_eventlog.

@notify_email_operator_name

Der E-Mail-Name der Person, an die E-Mail gesendet werden soll, wenn @notify_email_operator_name erreicht ist. @notify_email_operator_name ist "sysname" mit einem Standardwert von NULL.

@notify_netsend_operator_name

Der Name des Operators, an den nach dem Abschluss dieses Auftrags die Netzwerknachricht gesendet wird. @notify_netsend_operator_name ist "sysname" mit der Standardeinstellung "NULL.

@notify_page_operator_name

Der Name der Person, die nach dem Abschluss dieses Auftrags per Pager benachrichtigt werden soll. @notify_page_operator_name ist "sysname" mit der Standardeinstellung "NULL.

@delete_level

Ein Wert, der angibt, wann der Auftrag gelöscht werden soll. delete_value ist int, mit einem Standardwert von 0, was bedeutet niemals. @delete_level verwendet dieselben Werte wie @notify_level_eventlog.

Hinweis

Wenn @delete_level ist 3, wird der Auftrag nur einmal ausgeführt, unabhängig von den 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 AUSGABE

Die Auftrags-ID, die dem Auftrag zugewiesen wird, wenn er erfolgreich erstellt wurde. @job_id ist eine Ausgabevariable vom Typ uniqueidentifier, mit einem Standardwert von NULL.

Rückgabecodewerte

0 (Erfolg) oder 1 (Fehler).

Resultset

Keine.

Hinweise

@originating_server ist in sp_add_jobvorhanden, wird jedoch nicht unter "Argumente" aufgeführt. @originating_server ist für die interne Verwendung reserviert.

Nachdem sp_add_job ein Auftrag hinzugefügt wurde, kann verwendet werden, um Schritte hinzuzufügen, sp_add_jobstep die die Aktivitäten für den Auftrag ausführen. sp_add_jobschedulekann verwendet werden, um den Zeitplan zu erstellen, den der SQL Server-Agent-Dienst zum Ausführen des Auftrags verwendet.

Wird sp_add_jobserver verwendet, um die SQL Server-Instanz festzulegen, in der der Auftrag ausgeführt wird, und sp_delete_jobserver um den Auftrag aus der SQL Server-Instanz zu entfernen. Wenn der Auftrag auf einem oder mehreren Zielservern in einer Multiserverumgebung ausgeführt wird, verwenden Sie diese Option sp_apply_job_to_targets , um die Zielserver oder Zielservergruppen für den Auftrag festzulegen. Um Aufträge von Zielservern oder Zielservergruppen zu entfernen, verwenden Sie sp_remove_job_from_targets. Das Multi Server Administration (MSX/TSX)-Feature wird für Azure SQL verwaltete Instanz nicht unterstützt.

SQL Server Management Studio bietet eine einfache grafische Möglichkeit zum Verwalten von Aufträgen. Es handelt sich hierbei um die empfohlene Art und Weise zum Erstellen und Verwalten der Auftragsinfrastruktur.

Diese gespeicherte Prozedur teilt den Namen sp_add_job mit einem ähnlichen Objekt für den Azure Elastic Jobs-Dienst für Azure SQL-Datenbank. Informationen zur Version der elastischen Aufträge finden Sie unter jobs.sp_add_job (Azure Elastic Jobs) (Transact-SQL).

Berechtigungen

Diese gespeicherte Prozedur gehört der db_owner Rolle. Sie können berechtigungen für jeden Benutzer erteilen EXECUTE , diese Berechtigungen können jedoch während eines SQL Server-Upgrades außer Kraft gesetzt werden.

Anderen Benutzern muss eine der folgenden SQL Server-Agent festen Datenbankrollen in der msdb Datenbank gewährt werden:

  • SQLAgentUserRole
  • SQLAgentReaderRole
  • SQLAgentOperatorRole

Weitere Informationen zu den Berechtigungen dieser Rollen 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 keine Mitglieder des Sysadmin-Rollensatzes sind oder den Wert von @owner_login_name ändern, schlägt die Ausführung dieser gespeicherten Prozedur fehl, und ein Fehler wird 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