Freigeben über


sp_update_jobstep (Transact-SQL)

Gilt für: SQL Server Azure SQL Managed Instance

Ändert die Einstellung für einen Schritt in einem Auftrag, der zum Ausführen automatisierter Aktivitäten im SQL Server-Agent-Dienst verwendet wird.

Transact-SQL-Syntaxkonventionen

Syntax

sp_update_jobstep
    [ [ @job_id = ] 'job_id' ]
    [ , [ @job_name = ] N'job_name' ]
    , [ @step_id = ] step_id
    [ , [ @step_name = ] N'step_name' ]
    [ , [ @subsystem = ] N'subsystem' ]
    [ , [ @command = ] N'command' ]
    [ , [ @additional_parameters = ] N'additional_parameters' ]
    [ , [ @cmdexec_success_code = ] cmdexec_success_code ]
    [ , [ @on_success_action = ] on_success_action ]
    [ , [ @on_success_step_id = ] on_success_step_id ]
    [ , [ @on_fail_action = ] on_fail_action ]
    [ , [ @on_fail_step_id = ] on_fail_step_id ]
    [ , [ @server = ] N'server' ]
    [ , [ @database_name = ] N'database_name' ]
    [ , [ @database_user_name = ] N'database_user_name' ]
    [ , [ @retry_attempts = ] retry_attempts ]
    [ , [ @retry_interval = ] retry_interval ]
    [ , [ @os_run_priority = ] os_run_priority ]
    [ , [ @output_file_name = ] N'output_file_name' ]
    [ , [ @flags = ] flags ]
    [ , [ @proxy_id = ] proxy_id ]
    [ , [ @proxy_name = ] N'proxy_name' ]
[ ; ]

Argumente

[ @job_id = ] 'job_id'

Die ID des Auftrags, zu dem der Schritt gehört. @job_id ist eindeutiger Bezeichner mit einem Standardwert von NULL.

Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @job_name = ] N'job_name'

Der Name des Auftrags, zu dem der Schritt gehört. @job_name ist "sysname" mit der Standardeinstellung "NULL.

Entweder @job_id oder @job_name müssen angegeben werden, beide können jedoch nicht angegeben werden.

[ @step_id = ] step_id

Die ID des Auftragsschrittes, der geändert werden soll. @step_id ist "int" ohne Standard. Diese Zahl kann nicht geändert werden.

[ @step_name = ] N'step_name'

Ein neuer Name für den Schritt. @step_name ist "sysname" mit der Standardeinstellung "NULL.

[ @subsystem = ] N'Subsystem'

Das Subsystem, das von SQL Server-Agent zum Ausführen @command verwendet wird. @subsystem ist nvarchar(40), wobei die Standardeinstellung istNULL.

[ @command = ] N'command'

Die Befehle, die über @subsystem ausgeführt werden sollen. @command ist nvarchar(max), mit einem Standardwert von NULL.

[ @additional_parameters = ] N'additional_parameters'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @cmdexec_success_code = ] cmdexec_success_code

Der von einem CmdExec-Subsystembefehl zurückgegebene Wert, der angibt, dass der Befehl erfolgreich ausgeführt wurde. @cmdexec_success_code ist int, mit einem Standardwert von NULL.

[ @on_success_action = ] on_success_action

Die Aktion, die ausgeführt werden soll, wenn der Schritt erfolgreich ausgeführt wird. @on_success_action ist winzig, mit einem Standardwert NULLvon , und kann einer dieser Werte sein.

Wert Beschreibung (Aktion)
1 Beenden mit Erfolg
2 Beenden mit Fehler
3 Zum nächsten Schritt wechseln
4 Wechseln sie zu Schritt @on_success_step_id

[ @on_success_step_id = ] on_success_step_id

Die Identifikationsnummer des Schritts in diesem Auftrag, der ausgeführt werden soll, wenn der Schritt erfolgreich ist und @on_success_action ist 4. @on_success_step_id ist int mit einem Standardwert von NULL.

[ @on_fail_action = ] on_fail_action

Die Aktion, die ausgeführt werden soll, wenn der Schritt fehlschlägt. @on_fail_action ist winzig und kann einen dieser Werte haben.

Wert Beschreibung (Aktion)
1 Beenden mit Erfolg
2 Beenden mit Fehler
3 Zum nächsten Schritt wechseln
4 Wechseln sie zu Schritt @on_fail_step_id

[ @on_fail_step_id = ] on_fail_step_id

Die Identifikationsnummer des Auszuführenden Schritts in diesem Auftrag, wenn der Schritt fehlschlägt und @on_fail_action ist 4. @on_fail_step_id ist int mit einem Standardwert von NULL.

[ @server = ] N'server'

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @database_name = ] N'database_name'

Der Name der Datenbank, in der ein Transact-SQL-Schritt ausgeführt werden soll. @database_name ist "sysname" mit einem Standardwert von NULL. Namen, die in eckige Klammern ([]) eingeschlossen sind, sind nicht zulässig.

[ @database_user_name = ] N'database_user_name'

Der Name des Datenbankbenutzers, der beim Ausführen eines Transact-SQL-Schritts verwendet werden soll. @database_user_name ist "sysname" mit der Standardeinstellung "NULL.

[ @retry_attempts = ] retry_attempts

Die Anzahl der Wiederholungsversuche für den Fall, dass dieser Schritt fehlschlägt. @retry_attempts ist int mit einem Standardwert von NULL.

[ @retry_interval = ] retry_interval

Der Zeitraum in Minuten zwischen zwei Wiederholungsversuchen. @retry_interval ist int mit einem Standardwert von NULL.

[ @os_run_priority = ] os_run_priority

Nur für Informationszwecke identifiziert. Wird nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt.

[ @output_file_name = ] N'output_file_name'

Der Name der Datei, in der die Ausgabe dieses Schritts gespeichert wird. @output_file_name ist nvarchar(200), wobei die Standardeinstellung istNULL. Dieser Parameter ist nur für Befehle gültig, die in Transact-SQL- oder CmdExec-Subsystemen ausgeführt werden.

Wenn Sie @output_file_name wieder festlegen möchten, müssen Sie @output_file_name auf eine leere Zeichenfolge oder auf eine Zeichenfolge mit leeren Zeichen festlegen, die Funktion kann jedoch nicht verwendet CHAR(32) NULLwerden.

Sie können dieses Argument z. B. wie folgt auf eine leere Zeichenfolge festlegen:

@output_file_name = ' '

[ @flags = ] Flags

Eine Option, die das Verhalten steuert. @flags ist int, mit einem Standardwert von NULL.

Wert Beschreibung
0 (Standardwert) Ausgabedatei überschreiben
2 An Ausgabedatei anfügen
4 Ausgabe des Transact-SQL-Auftragsschrittes in Schrittverlauf schreiben
8 Protokoll in Tabelle schreiben (vorhandenen Verlauf überschreiben)
16 Protokoll in Tabelle schreiben (an vorhandenen Verlauf anfügen)

[ @proxy_id = ] proxy_id

Die ID des Proxys, als der der Auftragsschritt ausgeführt wird. @proxy_id ist int mit einem Standardwert von NULL. Wenn kein @proxy_id angegeben ist, wird kein @proxy_name angegeben, und es wird kein @database_user_name angegeben, wird der Auftragsschritt als Dienstkonto für SQL Server-Agent ausgeführt.

[ @proxy_name = ] N'proxy_name'

Der Name des Proxys, als der der Auftragsschritt ausgeführt wird. @proxy_name ist "sysname" mit der Standardeinstellung "NULL. Wenn kein @proxy_id angegeben ist, wird kein @proxy_name angegeben, und es wird kein @database_user_name angegeben, wird der Auftragsschritt als Dienstkonto für SQL Server-Agent ausgeführt.

Rückgabecodewerte

0 (erfolgreich) oder 1 Fehler.

Hinweise

sp_update_jobstep muss aus der msdb Datenbank ausgeführt werden.

Beim Aktualisieren eines Auftragsschrittes wird die Versionsnummer des Auftrags erhöht.

Diese gespeicherte Prozedur teilt den Namen sp_update_jobstep 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_update_jobstep (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 von sysadmin können einen Auftragsschritt eines Auftrags aktualisieren, der einem anderen Benutzer gehört.

Falls für den Auftragsschritt der Zugriff auf einen Proxy erforderlich ist, muss der Ersteller des Auftragsschrittes Zugriff auf den Proxy für den Auftragsschritt haben. Alle Subsysteme außer Transact-SQL erfordern ein Proxykonto. Mitglieder von sysadmin haben Zugriff auf alle Proxys und können das SQL Server-Agent Dienstkonto für den Proxy verwenden.

Beispiele

Im folgenden Beispiel wird die Anzahl der Wiederholungsversuche für den ersten Schritt des Weekly Sales Data Backup-Auftrags geändert. Nachdem Sie dieses Beispiel ausgeführt haben, lautet 10die Anzahl der Wiederholungsversuche.

USE msdb;
GO

EXEC dbo.sp_update_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_id = 1,
    @retry_attempts = 10;
GO