(0) exportieren Drucken
Alle erweitern
Erweitern Minimieren
Dieser Artikel wurde manuell übersetzt. Bewegen Sie den Mauszeiger über die Sätze im Artikel, um den Originaltext anzuzeigen. Weitere Informationen
Übersetzung
Original

sp_add_jobstep (Transact-SQL)

Fügen einem Auftrag einen Schritt (Vorgang) hinzu.

Gilt für: SQL Server (SQL Server 2008 bis aktuelle Version).

Themenlink (Symbol) Transact-SQL-Syntaxkonventionen

sp_add_jobstep [ @job_id = ] job_id | [ @job_name = ] 'job_name' 
     [ , [ @step_id = ] step_id ] 
     { , [ @step_name = ] 'step_name' } 
     [ , [ @subsystem = ] 'subsystem' ] 
     [ , [ @command = ] 'command' ] 
     [ , [ @additional_parameters = ] 'parameters' ] 
          [ , [ @cmdexec_success_code = ] code ] 
     [ , [ @on_success_action = ] success_action ] 
          [ , [ @on_success_step_id = ] success_step_id ] 
          [ , [ @on_fail_action = ] fail_action ] 
          [ , [ @on_fail_step_id = ] fail_step_id ] 
     [ , [ @server = ] 'server' ] 
     [ , [ @database_name = ] 'database' ] 
     [ , [ @database_user_name = ] 'user' ] 
     [ , [ @retry_attempts = ] retry_attempts ] 
     [ , [ @retry_interval = ] retry_interval ] 
     [ , [ @os_run_priority = ] run_priority ] 
     [ , [ @output_file_name = ] 'file_name' ] 
     [ , [ @flags = ] flags ] 
     [ , { [ @proxy_id = ] proxy_id 
         | [ @proxy_name = ] 'proxy_name' } ]

[ @job_id = ] job_id

Die ID des Auftrags, dem der Schritt hinzugefügt werden soll. job_id ist vom Datentyp uniqueidentifier. Der Standardwert ist NULL.

[ @job_name = ] 'job_name'

Der Name des Auftrags, dem der Schritt hinzugefügt werden soll. job_name ist vom Datentyp sysname. Der Standardwert ist NULL.

Hinweis Hinweis

Es muss entweder job_id oder job_name angegeben werden, aber beide Angaben sind nicht möglich.

[ @step_id = ] step_id

Die Sequenz-ID des Auftragsschritts. Schritt-IDs beginnen mit 1 und werden lückenlos erhöht. Wenn ein Schritt in eine vorhandene Sequenz eingefügt wird, werden die Sequenznummern automatisch angepasst. Ein Wert wird angegeben, wenn step_id nicht angegeben ist. step_idist vom Datentyp int. Der Standardwert ist NULL.

[ @step_name = ] 'step_name'

Der Name des Schrittes. step_nameist sysname und hat keinen Standardwert.

[ @subsystem = ] 'subsystem'

Das vom SQL Server-Agent-Dienst verwendete Subsystem zur Ausführung von command. subsystem ist vom Datentyp nvarchar(40). Die folgenden Werte sind möglich:

Wert

Beschreibung

'ACTIVESCRIPTING'

Active Script

Wichtiger Hinweis Wichtig

Diese Funktion wird in zukünftigen Versionen von Microsoft SQL Server nicht mehr bereitgestellt. Verwenden Sie diese Funktion beim Entwickeln neuer Anwendungen nicht, und planen Sie das Ändern von Anwendungen, in denen es zurzeit verwendet wird.

'CMDEXEC'

Betriebssystembefehl oder ausführbares Programm

'DISTRIBUTION'

Auftrag des Replikationsverteilungs-Agents

'SNAPSHOT'

Auftrag des Replikationsmomentaufnahme-Agents

'LOGREADER'

Auftrag des Replikationsprotokolllese-Agents

'MERGE'

Auftrag des Replikationsmerge-Agents

'QueueReader'

Warteschlangenlese-Agent-Auftrag der Replikation

'ANALYSISQUERY'

Analysis Services-Abfrage (MDX, DMX)

'ANALYSISCOMMAND'

Analysis Services-Befehl (XMLA)

'Dts'

Integration Services-Paketausführung

'PowerShell'

PowerShell-Skript

'TSQL' (Standardwert)

Transact-SQL-Anweisung

[ @command= ] 'command'

Die Befehle, die vom SQLServerAgent-Dienst über subsystem ausgeführt werden müssen. command ist vom Datentyp nvarchar(max). Der Standardwert ist NULL. Vom SQL Server-Agent wird eine Tokenersetzung bereitgestellt, die Ihnen beim Schreiben von Softwareprogrammen dieselbe Flexibilität wie Variablen bietet.

Wichtiger Hinweis Wichtig

Damit Auftragsschritte fehlerfrei ausgeführt werden können, müssen alle in Auftragsschritten verwendeten Token von einem Escapemakro begleitet werden. Darüber hinaus müssen Sie Tokennamen nun in runde Klammern einschließen und ein Dollarzeichen ($) an den Anfang der Tokensyntax setzen. Zum Beispiel:

$(ESCAPE_ macro name (DATE))

Weitere Informationen zu diesen Token und zum Aktualisieren der Auftragsschritte auf die neue Tokensyntax finden Sie unter Verwenden von Token in Auftragsschritten.

Sicherheitshinweis Sicherheitshinweis

Jeder Windows-Benutzer mit Schreibberechtigungen für das Windows-Ereignisprotokoll kann auf Auftragsschritte zugreifen, die durch SQL Server-Agent-Warnungen oder WMI-Warnungen aktiviert werden. Um dieses Sicherheitsrisiko zu vermeiden, sind SQL Server-Agenttoken, die in durch Warnungen aktivierten Aufträgen verwendet werden können, standardmäßig deaktiviert. Dabei handelt es sich um folgende Token: A-DBN, A-SVR, A-ERR, A-SEV, A-MSG und WMI(property). Beachten Sie, dass in dieser Version die Verwendung von Token auf alle Warnungen ausgeweitet ist.

Wenn Sie diese Token verwenden müssen, stellen Sie zuvor sicher, dass ausschließlich Mitglieder von vertrauenswürdigen Windows-Sicherheitsgruppen, wie der Administratorengruppe, über Schreibberechtigungen für das Ereignisprotokoll des Computers verfügen, auf dem SQL Server ausgeführt wird. Klicken Sie dann zum Aktivieren dieser Token im Objekt-Explorer mit der rechten Maustaste auf SQL Server-Agent, wählen Sie Eigenschaften aus, und wählen Sie anschließend auf der Seite Warnungssystem die Option Token für alle Auftragsantworten auf Warnungen ersetzen aus.

[ @additional_parameters= ] 'parameters'

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. parameters ist ein Wert vom Datentyp ntext. Der Standardwert lautet NULL.

[ @cmdexec_success_code = ] code

Der von einem CmdExec-Subsystembefehl zurückgegebene Wert, der angibt, dass command erfolgreich ausgeführt wurde. codeist int. Der Standardwert ist 0.

[ @on_success_action= ] success_action

Die Aktion, die ausgeführt werden soll, wenn der Schritt erfolgreich ausgeführt wird. success_actionist vom Datentyp tinyint. Die folgenden Werte sind möglich:

Wert

Beschreibung (Aktion)

1 (Standard)

Beenden mit Erfolg

2

Beenden mit Fehler

3

Zum nächsten Schritt wechseln

4

Fahren Sie fort mit Schritt on_success_step_id

[ @on_success_step_id = ] success_step_id

Die ID des Schritts in diesem Auftrag, die ausgeführt werden soll, wenn der Schritt erfolgreich ist, und success_action4 ist. success_step_idist int. Der Standardwert ist 0.

[ @on_fail_action= ] fail_action

Die Aktion, die ausgeführt werden soll, wenn der Schritt fehlschlägt. fail_actionist vom Datentyp tinyint. Die folgenden Werte sind möglich:

Wert

Beschreibung (Aktion)

1

Beenden mit Erfolg

2 (Standard)

Beenden mit Fehler

3

Zum nächsten Schritt wechseln

4

Fahren Sie fort mit Schritt on_fail_step_id

[ @on_fail_step_id= ] fail_step_id

Die ID des Schritts in diesem Auftrag, die ausgeführt werden soll, wenn der Schritt fehlschlägt und fail_action4 ist. fail_step_idist int. Der Standardwert ist 0.

[ @server =] 'server'

Nur für Informationszwecke identifiziert. Nicht unterstützt. Zukünftige Kompatibilität wird nicht sichergestellt. serverist ein Wert vom Datentyp nvarchar(30). Der Standardwert ist NULL.

[ @database_name = ] 'database'

Der Name der Datenbank, in der ein Transact-SQL-Schritt ausgeführt werden soll. database ist vom Datentyp sysname. Der Standardwert ist NULL. In diesem Fall wird die master-Datenbank verwendet. Von Klammern umgebene Namen ([ ]) sind nicht zulässig. Für einen ActiveX-Auftragsschritt gibt database den Namen der vom Schritt verwendeten Skriptsprache an.

[ @database_user_name= ] 'user'

Der Name des Benutzerkontos, das beim Ausführen eines Transact-SQL-Schritts verwendet werden soll. user ist vom Datentyp sysname. Der Standardwert ist NULL. Wenn user gleich NULL ist, wird der Schritt im Benutzerkontext des Auftragsbesitzers von database ausgeführt. SQL Server-Agent schließt nur diesen Parameter ein, wenn der Auftragsbesitzer ein SQL Server sysadmin ist. In diesem Fall wird der angegebene Transact-SQL-Schritt im Kontext des angegebenen SQL Server-Benutzernamens ausgeführt. Wenn der Auftragsbesitzer kein SQL Server sysadmin ist, dann wird der Transact-SQL-Schritt immer im Kontext der Anmeldung ausgeführt, die diesen Auftrag besitzt, und der @database_user_name-Parameter wird ignoriert.

[ @retry_attempts= ] retry_attempts

Die Anzahl der Wiederholungsversuche für den Fall, dass dieser Schritt fehlschlägt. retry_attemptsist int. Der Standardwert ist 0. Daher sind keine Wiederholungsversuche vorhanden.

[ @retry_interval= ] retry_interval

Der Zeitraum in Minuten zwischen zwei Wiederholungsversuchen. retry_intervalist int. Der Standardwert ist 0 und gibt ein Intervall von 0 Minuten an.

[ @os_run_priority = ] run_priority

Reserviert.

[ @output_file_name= ] 'file_name'

Der Name der Datei, in der die Ausgabe dieses Schritts gespeichert wird. file_nameist vom Datentyp nvarchar(200). Der Standardwert ist NULL. file_namekann mindestens einen der unter command aufgeführten Token enthalten. Dieser Parameter ist nur mit Befehlen gültig, die im Transact-SQL-, CmdExec-, PowerShell-, Integration Services- oder im Analysis Services-Subsystem ausgeführt werden.

[ @flags= ] flags

Ist eine Option, die das Verhalten steuert. flags ist vom Datentyp int. Die folgenden Werte sind möglich:

Wert

Beschreibung

0 (Standard)

Ausgabedatei überschreiben

2

An Ausgabedatei anfügen

4

Ausgabe des Transact-SQL-Auftragsschritts in Schrittverlauf schreiben

8

Protokoll in Tabelle schreiben (vorhandenen Verlauf überschreiben)

16

Protokoll in Tabelle schreiben (an vorhandenen Verlauf anfügen)

32

Schreiben der gesamten Ausgabe in den Auftragsverlauf

64

Erstellen eines Windows-Ereignisses, das für den Cmd-Jobstep als Signal als Signal zum Abbruch verwendet werden soll

[ @proxy_id = ] proxy_id

Die ID des Proxys, als der der Auftragsschritt ausgeführt wird. proxy_id ist vom Datentyp int. Der Standardwert ist NULL. Wenn proxy_id, proxy_name und user_name nicht angegeben werden, wird der Auftragsschritt als Dienstkonto für den SQL Server-Agent ausgeführt.

[ @proxy_name = ] 'proxy_name'

Der Name des Proxys, als der der Auftragsschritt ausgeführt wird. proxy_name ist vom Datentyp sysname. Der Standardwert ist NULL. Wenn proxy_id, proxy_name und user_name nicht angegeben werden, wird der Auftragsschritt als Dienstkonto für den SQL Server-Agent ausgeführt.

0 (Erfolg) oder 1 (Fehler)

sp_add_jobstep muss von der msdb-Datenbank aus ausgeführt werden.

Mit SQL Server Management Studio lassen sich Aufträge mühelos mit einer grafischen Oberfläche verwalten. Dies ist die empfohlene Vorgehensweise zum Erstellen und Verwalten der Auftragsinfrastruktur.

Für einen Auftragsschritt muss ein Proxy angegeben werden, es sei denn, der Ersteller des Auftragsschritts ist ein Mitglied der festen Sicherheitsrolle sysadmin.

Ein Proxy muss mithilfe von proxy_name oder proxy_id identifiziert werden.

Standardmäßig können nur Mitglieder der festen Serverrolle sysadmin diese gespeicherte Prozedur ausführen. Anderen Benutzern muss eine der folgenden festen Datenbankrollen des SQL Server-Agents in der msdb-Datenbank zugewiesen werden:

  • SQLAgentUserRole

  • SQLAgentReaderRole

  • SQLAgentOperatorRole

Weitere Informationen zu den Berechtigungen dieser Rollen finden Sie unter Feste Datenbankrollen des SQL Server-Agents.

Der Ersteller des Auftragsschritts muss Zugriff auf den für den Auftragsschritt verwendeten Proxy haben. Mitglieder der festen Serverrolle sysadmin haben Zugriff auf alle Proxys. Anderen Benutzern muss der Zugriff auf einen Proxy explizit erteilt werden.

Im folgenden Beispiel wird ein Auftragsschritt erstellt, der für die Sales-Datenbank den Schreibschutz aktiviert. Zudem werden in diesem Beispiel 5 Wiederholungsversuche festgelegt, wobei jede Wiederholung nach einer Wartezeit von 5 Minuten auftritt.

Hinweis Hinweis

Bei diesem Beispiel wird vorausgesetzt, dass der Auftrag Weekly Sales Data Backup bereits vorhanden ist.

USE msdb;
GO
EXEC sp_add_jobstep
    @job_name = N'Weekly Sales Data Backup',
    @step_name = N'Set database to read only',
    @subsystem = N'TSQL',
    @command = N'ALTER DATABASE SALES SET READ_ONLY', 
    @retry_attempts = 5,
    @retry_interval = 5 ;
GO

Community-Beiträge

HINZUFÜGEN
Anzeigen:
© 2014 Microsoft