Freigeben über


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 TSqlder 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 Inlineder 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 SqlDatabaseder Wert sein.

@output_credential_name

Ist dies nicht NULLder 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 NULLder 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 dboder 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';