jobs.sp_update_jobstep (Azure Elastic Jobs) (Transact-SQL)
Gilt für: Azure SQL-Datenbank
Ändert einen Auftragsschritt in einem vorhandenen Auftrag im Azure Elastic Jobs-Dienst für Azure SQL-Datenbank. Verwenden Sie jobs.sp_add_jobstep , um einem Auftrag Auftragsschritte hinzuzufügen.
Diese gespeicherte Prozedur teilt den Namen mit sp_update_jobstep
einem ähnlichen Objekt in SQL Server für den SQL Server-Agent-Dienst. Informationen zur SQL Server-Agent-Version finden Sie unter sp_update_jobstep.
Transact-SQL-Syntaxkonventionen
Syntax
[jobs].sp_update_jobstep [ @job_name = ] 'job_name'
[ , [ @step_id = ] step_id ]
[ , [ @step_name = ] 'step_name' ]
[ , [ @new_id = ] new_id ]
[ , [ @new_name = ] 'new_name' ]
[ , [ @command_type = ] 'command_type' ]
[ , [ @command_source = ] 'command_source' ]
, [ @command = ] 'command'
[ , [ @credential_name = ] 'credential_name' ]
, [ @target_group_name = ] 'target_group_name'
[ , [ @initial_retry_interval_seconds = ] initial_retry_interval_seconds ]
[ , [ @maximum_retry_interval_seconds = ] maximum_retry_interval_seconds ]
[ , [ @retry_interval_backoff_multiplier = ] retry_interval_backoff_multiplier ]
[ , [ @retry_attempts = ] retry_attempts ]
[ , [ @step_timeout_seconds = ] step_timeout_seconds ]
[ , [ @output_type = ] 'output_type' ]
[ , [ @output_credential_name = ] 'output_credential_name' ]
[ , [ @output_server_name = ] 'output_server_name' ]
[ , [ @output_database_name = ] 'output_database_name' ]
[ , [ @output_schema_name = ] 'output_schema_name' ]
[ , [ @output_table_name = ] 'output_table_name' ]
[ , [ @job_version = ] job_version OUTPUT ]
[ , [ @max_parallelism = ] max_parallelism ]
Argumente
@job_name
Der Name des Auftrags, zu dem der Schritt gehört. job_name ist nvarchar(128).
@step_id
Die ID des Auftragsschrittes, der geändert werden soll. Entweder step_id oder step_name müssen angegeben werden. step_id ist ein Int.
@step_name
Der Name des Schritts, der geändert werden soll. Entweder step_id oder step_name müssen angegeben werden. step_name ist nvarchar(128).
@new_id
Die neue Sequenz-ID für den Auftragsschritt. Die Schritt-IDs beginnen bei „1“ und erhöhen sich lückenlos schrittweise. Wenn ein Schritt neu angeordnet wird, werden die anderen Schritte automatisch neu nummeriert.
@new_name
Der neue Name des Schritts. new_name ist nvarchar(128).
@command_type
Der Typ des Befehls, der von diesem Auftragsschritt ausgeführt wird. command_type ist nvarchar(50), mit einem Standardwert von TSql
, was bedeutet, dass der Wert des @command_type-Parameters ein T-SQL-Skript ist.
Wenn angegeben, muss TSql
der Wert sein.
@command_source
Der Typ des Speicherorts, an dem der Befehl gespeichert ist. command_source ist nvarchar(50), mit einem Standardwert von Inline
, was bedeutet, dass der Wert des @command Parameters der Literaltext des Befehls ist.
Wenn angegeben, muss Inline
der Wert sein.
@command
Das gültige T-SQL-Skript, das von diesem Auftragsschritt ausgeführt werden soll. command is nvarchar(max), with a default of NULL
.
@credential_name
Der Name der datenbankbezogenen Anmeldeinformationen, die in dieser Auftragssteuerungsdatenbank gespeichert sind, die zum Herstellen einer Verbindung mit den einzelnen Zieldatenbanken innerhalb der Zielgruppe verwendet wird, wenn dieser Schritt ausgeführt wird. credential_name ist nvarchar(128).
Wenn Sie die Microsoft Entra-Authentifizierung (vormals Azure Active Directory) verwenden, lassen Sie den parameter @credential_name aus, der nur bei Verwendung von Anmeldeinformationen mit Datenbankbereich bereitgestellt werden sollte.
@target_group_name
Der Name der Zielgruppe, die die Zieldatenbanken enthält, für die der Auftragsschritt ausgeführt wird. target_group_name ist nvarchar(128).
@initial_retry_interval_seconds
Die Verzögerung vor dem ersten Wiederholungsversuch, wenn der Auftragsschritt bei der ersten Ausführung einen Fehler verursacht. initial_retry_interval_seconds ist int mit dem Standardwert 1.
@maximum_retry_interval_seconds
Die maximale Verzögerung zwischen Wiederholungsversuchen. Wenn die Verzögerung zwischen Wiederholungen größer als dieser Wert würde, wird sie stattdessen auf diesen Wert begrenzt. maximum_retry_interval_seconds ist int mit dem Standardwert 120.
@retry_interval_backoff_multiplier
Der Multiplikator, der auf die Wiederholungsverzögerung anzuwenden ist, wenn bei mehreren Auftragsschrittausführungen ein Fehler aufgetreten ist. Wenn beim ersten Wiederholungsversuch z.B. eine Verzögerung von 5 Sekunden aufgetreten ist und der Wartezeitmultiplikator „2,0“ beträgt, tritt beim zweiten Wiederholungsversuch eine Verzögerung von 10 Sekunden und beim dritten Wiederholungsversuch eine Verzögerung von 20 Sekunden auf. retry_interval_backoff_multiplier ist der echte Datentyp mit dem Standardwert 2,0.
@retry_attempts
Die Anzahl der Wiederholungen für die Ausführung, wenn beim ersten Versuch ein Fehler auftritt. Wenn beispielsweise der wert retry_attempts 10 ist, gibt es 1 anfänglichen Versuch und 10 Wiederholungsversuche, sodass insgesamt 11 Versuche zurückgegeben werden. Wenn der letzte Wiederholungsversuch fehlschlägt, wird die Auftragsausführung mit einem lifecycle
in Failed
jobs.job_executions aufgezeichneten Beendet. retry_attempts ist int mit dem Standardwert 10.
@step_timeout_seconds
Die maximal zulässige Dauer für den auszuführenden Schritt. Wenn diese Zeit überschritten wird, wird die Auftragsausführung mit einem lifecycle
in TimedOut
jobs.job_executions aufgezeichneten Beendet. step_timeout_seconds ist "int" mit dem Standardwert 43.200 Sekunden (12 Stunden).
@output_type
Wenn nicht NULL
, wird der Typ des Ziels, in das das erste Resultset des Befehls geschrieben wird, geschrieben. Wenn Sie den Wert von output_type auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_type ist nvarchar(50), mit einem Standardwert von NULL
.
Wenn angegeben, muss SqlDatabase
der Wert sein.
@output_credential_name
Ist dies nicht NULL
der Name der Anmeldeinformationen mit Datenbankbereich, die zum Herstellen einer Verbindung mit der Ausgabezieldatenbank verwendet werden. Muss angegeben werden, wenn output_type gleich ist SqlDatabase
. Wenn Sie den Wert von output_credential_name auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_credential_name ist nvarchar(128), mit einem Standardwert von NULL
.
Wenn Sie die Microsoft Entra-Authentifizierung (vormals Azure Active Directory) verwenden, lassen Sie den parameter @output_credential_name aus, der nur bei Verwendung von Anmeldeinformationen mit Datenbankbereich bereitgestellt werden sollte.
@output_server_name
Ist dies nicht NULL
der vollqualifizierte DNS-Name des Servers, der die Ausgabezieldatenbank enthält, @output_server_name = 'server1.database.windows.net'
z. B. . Muss angegeben werden, wenn output_type gleich ist SqlDatabase
. Wenn Sie den Wert von output_server_name auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_server_name ist nvarchar(256), mit einem Standardwert von NULL
.
@output_database_name
Wenn nicht NULL
, der Name der Datenbank, die die Ausgabezieltabelle enthält. Muss angegeben werden, wenn output_type gleich ist SqlDatabase
. Wenn Sie den Wert von output_database_name auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_database_name ist nvarchar(128), mit einem Standardwert von NULL
.
@output_schema_name
Wenn nicht NULL
, der Name des SQL-Schemas, das die Ausgabezieltabelle enthält. Wenn output_type gleich ist SqlDatabase
, lautet dbo
der Standardwert . Wenn Sie den Wert von output_schema_name auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_schema_name ist nvarchar(128).
@output_table_name
Wenn nicht NULL
, wird der Name der Tabelle, in die das erste Resultset des Befehls geschrieben wird, geschrieben. Wenn die Tabelle noch nicht vorhanden ist, wird sie basierend auf dem Schema des zurückgebenden Resultsets erstellt. Muss angegeben werden, wenn output_type gleich ist SqlDatabase
. Wenn Sie den Wert von output_server_name auf NULL
"" zurücksetzen möchten, legen Sie den Wert dieses Parameters auf "" (leere Zeichenfolge) fest. output_table_name ist nvarchar(128), mit einem Standardwert von NULL
.
Wenn Sie eine output_table_name angeben, sollten dem Auftrags-Agent UMI oder datenbankbezogenen Anmeldeinformationen die erforderlichen Berechtigungen für CREATE TABLE und INSERT-Daten in der Tabelle erteilt werden.
@job_version AUSGABE
Der Output-Parameter, der die Versionsnummer des neuen Auftrags zugewiesen wird. job_version ist int.
@max_parallelism AUSGABE
Der maximale Grad an Parallelität pro Pool für elastische Datenbanken. Wenn dieser festgelegt ist, kann beim Auftragsschritt ausschließlich der maximale Grenzwert der zahlreichen Datenbanken pro Pool für elastische Datenbanken ausgeführt werden. Dies gilt für sämtliche Pools für elastische Datenbanken, die entweder direkt in die Zielgruppe eingeschlossen sind oder sich auf einem Server befinden, der in der Zielgruppe eingeschlossen ist. Um den Wert von max_parallelism zurück aufzusetzen NULL
, legen Sie den Wert dieses Parameters auf -1
. max_parallelism ist int.
Rückgabecodewerte
0
(erfolgreich) oder 1
Fehler.
Hinweise
Keine der laufenden Ausführungen des Auftrags sind davon betroffen. Wenn jobs.sp_update_jobstep
dies erfolgreich ist, wird die Versionsnummer des Auftrags erhöht. Bei der nächsten Ausführung des Auftrags wird die neue Version verwendet.
Berechtigungen
Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin diese gespeicherte Prozedur ausführen. Nur Mitglieder der Rolle „sysadmin“ können mithilfe dieser gespeicherten Prozedur Attribute von Aufträgen bearbeiten, die anderen Benutzern gehören.
Beispiele
Befehl 'Aktualisieren' eines elastischen Auftragsschritts
In diesem Beispiel wird der T-SQL-Befehl eines vorhandenen elastischen Auftragsschritts aktualisiert. Das T-SQL-Skript fügt einen Auftragsschritt hinzu, um eine Tabelle zu erstellen, wenn sie nicht vorhanden ist.
--Connect to the job database specified when creating the elastic job agent
-- Add job step to create a table if it does not exist
EXEC jobs.sp_update_jobstep @job_name = 'CreateTableTest',
@command = N'IF NOT EXISTS (SELECT * FROM sys.tables WHERE object_id = object_id(''Test''))
CREATE TABLE [dbo].[Test]([TestId] [int] NOT NULL);',
@target_group_name = 'PoolGroup';