sp_add_job (Transact-SQL)
Gilt für: SQL Server Azure 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 0
der 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
(erfolgreich) oder 1
Fehler.
Resultset
Keine.
Hinweise
@originating_server ist in sp_add_job
vorhanden, 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_jobschedule
kann 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).
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
Zugehöriger Inhalt
- 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)