Erstellen von Auftragsschritten

Ein Auftragsschritt ist eine Aktion, die der Auftrag auf einer Datenbank oder einem Server ausführt. Jeder Auftrag muss mindestens einen Auftragsschritt aufweisen. Folgende Auftragsschritte sind möglich:

  • Ausführbare Programme und Betriebssystembefehle.

  • Transact-SQL-Anweisungen einschließlich gespeicherter Prozeduren und erweiterter gespeicherter Prozeduren.

  • PowerShell-Skripts.

  • MicrosoftActiveX-Skripts.

  • Replikationstasks.

  • Analysis Services-Tasks.

  • Integration Services-Pakete.

Jeder Auftragsschritt wird in einem bestimmten Sicherheitskontext ausgeführt. Wenn der Auftragsschritt einen Proxy erfordert, wird er im Sicherheitskontext der Anmeldeinformationen des Proxys ausgeführt. Wenn ein Auftragsschritt keinen Proxy erfordert, wird er im Kontext des SQL Server-Agent-Dienstkontos ausgeführt. Nur Mitglieder der festen Serverrolle sysadmin können Aufträge erstellen, die nicht ausdrücklich einen Proxy angeben.

Weil Auftragsschritte im Kontext eines bestimmten Microsoft Windows-Benutzers ausgeführt werden, muss dieser Benutzer über die Berechtigungen und Konfigurationen verfügen, die für die Ausführung des Auftragsschritts erforderlich sind. Wenn Sie beispielsweise einen Auftrag erstellen, der einen Laufwerkbuchstaben oder einen UNC-Pfad (Universal Naming Convention) erfordert, können die Auftragsschritte unter Ihrem Windows-Benutzerkonto ausgeführt werden, während die Tasks getestet werden. Allerdings muss der Windows-Benutzer für den Auftragsschritt auch über die notwendigen Berechtigungen, die Laufwerkbuchstabenkonfigurationen oder den Zugriff auf das erforderliche Laufwerk verfügen. Andernfalls erzeugt der Auftragsschritt einen Fehler. Um dieses Problem zu verhindern, stellen Sie sicher, dass der Proxy für jeden Auftragsschritt über die notwendigen Berechtigungen für den Task verfügt, von dem der Auftragsschritt ausgeführt wird. Weitere Informationen finden Sie unter Sicherheit und Schutz (Datenbankmodul).

Auftragsschrittprotokolle

Der SQL Server-Agent kann die Ausgabe bestimmter Auftragsschritte entweder in eine Betriebssystemdatei oder in die sysjobstepslogs-Tabelle der msdb-Datenbank schreiben. Von den folgenden Auftragsschritttypen können Ausgaben in beide Ziele geschrieben werden:

  • Ausführbare Programme und Betriebssystembefehle.

  • Transact-SQL-Anweisungen.

  • Analysis Services-Tasks.

Nur von Auftragsschritten, die von Benutzern ausgeführt werden, die Mitglieder der festen Serverrolle sysadmin sind, können Auftragsschrittausgaben in Betriebssystemdateien geschrieben werden. Wenn die Auftragsschritte von Benutzern ausgeführt werden, die Mitglieder der festen Datenbankrolle SQLAgentUserRole, SQLAgentReaderRole oder SQLAgentOperatorRole der msdb-Datenbank sind, kann die Ausgabe dieser Auftragsschritte nur in die sysjobstepslogs-Tabelle geschrieben werden.

Auftragsschritte werden automatisch gelöscht, wenn Aufträge oder Auftragsschritte gelöscht werden.

HinweisHinweis

Das Protokollieren von Replikationstasks und Integration Services-Paketauftragsschritten wird vom jeweiligen Subsystem durchgeführt. Sie können zum Konfigurieren der Auftragsschrittprotokollierung nicht den SQL Server-Agent für diese Art von Auftragsschritten verwenden.

Ausführbare Programme und Betriebssystembefehle als Auftragsschritte

Ausführbare Programme und Betriebssystembefehle können als Auftragsschritte verwendet werden. Diese Dateien können die Dateierweiterungen BAT, CMD, COM oder EXE aufweisen.

Wenn Sie ein ausführbares Programm oder einen Betriebssystembefehl als Auftragsschritt verwenden, müssen Sie Folgendes angeben:

  • Den Prozessexitcode, der zurückgegeben wird, wenn der Befehl erfolgreich ausgeführt wurde.

  • Den auszuführenden Befehl. Beim Ausführen eines Betriebssystembefehls handelt es sich hierbei einfach um den Befehl selbst. Bei einem externen Programm ist dies der Name des Programms und die Argumente für das Programm, z. B.: C:\Programme\Microsoft SQL Server\100\Tools\Binn\sqlcmd.exe -e -q "sp_who".

    HinweisHinweis

    Sie müssen den vollständigen Pfad zur ausführbaren Datei angeben, wenn diese sich nicht in dem Verzeichnis befindet, das im Systempfad oder dem Pfad für den Benutzer angegeben ist, als der der Auftragsschritt ausgeführt wird.

So erstellen Sie einen Auftragsschritt mit einem ausführbaren Programm

So setzen Sie SQL Server-Agent-Berechtigungen zurück

Transact-SQL-Auftragsschritte

Wenn Sie einen Transact-SQL-Auftragsschritt erstellen, müssen Sie folgende Schritte durchführen:

  • Identifizieren der Datenbank, in der Sie den Auftrag ausführen.

  • Eingeben der auszuführenden Transact-SQL-Anweisung. Von der Anweisung wird möglicherweise eine gespeicherte Prozedur oder eine erweiterte gespeicherte Prozedur aufgerufen.

Sie können auch eine vorhandene Transact-SQL-Datei als Befehl für den Auftragsschritt öffnen.

Von Transact-SQL-Auftragsschritten werden keine SQL Server-Agent-Proxys verwendet. Stattdessen wird der Auftragsschritt als Besitzer des Auftragsschritts bzw. als SQL Server-Agent-Dienstkonto ausgeführt, wenn der Besitzer des Auftragsschritts Mitglied der festen Serverrolle sysadmin ist. Mitglieder der festen Serverrolle sysadmin können auch angeben, dass Transact-SQL-Auftragsschritte unter dem Kontext eines anderen Benutzers ausgeführt werden, indem der database_user_name-Parameter der gespeicherten Prozedur sp_add_jobstep verwendet wird. Weitere Informationen finden Sie unter sp_add_jobstep (Transact-SQL).

HinweisHinweis

Ein einzelner Transact-SQL-Auftragsschritt kann mehrere Batches enthalten. Transact-SQL-Auftragsschritte können eingebettete GO-Befehle enthalten.

So erstellen Sie einen Transact-SQL-Auftragsschritt

So definieren Sie die Optionen für Transact-SQL-Auftragsschritte

PowerShell-Skript-Auftragsschritte

Wenn Sie einen PowerShell-Skript-Auftragsschritt erstellen, müssen Sie eins von zwei Elementen als Befehl für den Schritt angeben:

  • Den Text eines PowerShell-Skripts.

  • Eine vorhandene PowerShell-Skriptdatei, die geöffnet werden soll.

Das SQL Server Agent PowerShell-Subsystem öffnet eine PowerShell-Sitzung und lädt die SQL Server PowerShell-Snap-Ins. Das als Auftragsschrittbefehl verwendete PowerShell-Skript kann auf den SQL Server PowerShell-Anbieter und auf cmdlets verweisen. Weitere Informationen über das Schreiben von PowerShell-Skripts mithilfe von SQL Server PowerShell-Snap-Ins finden Sie unter Übersicht über SQL Server PowerShell.

ActiveX-Skript-Auftragsschritte

Wichtiger HinweisWichtig

Der ActiveX-Skript-Auftragsschritt wird in einer zukünftigen Version von MicrosoftSQL Server aus dem SQL Server-Agent entfernt. Verwenden Sie dieses Feature beim Entwickeln neuer Anwendungen nicht, und planen Sie eine Änderung von Anwendungen, in denen es zurzeit verwendet wird.

Wenn Sie einen ActiveX-Skriptauftragsschritt erstellen, ist Folgendes notwendig:

  • Identifizieren der Skriptsprache, in der der Auftragsschritt geschrieben ist.

  • Erstellen des ActiveX-Skripts.

Sie können auch eine vorhandene ActiveX-Skriptdatei als Befehl für den Auftragsschritt öffnen. ActiveX-Skriptbefehle können alternativ auch extern (beispielsweise mithilfe von Microsoft Visual Basic) kompiliert und anschließend als ausführbare Programme ausgeführt werden.

Handelt es sich bei dem Befehl eines Auftragsschritts um ein ActiveX-Skript, können Sie das SQLActiveScriptHost-Objekt verwenden, um Ausgaben in das Verlaufsprotokoll des Auftragsschritts zu drucken oder COM-Objekte zu erstellen. Bei SQLActiveScriptHost handelt es sich um ein globales Objekt, das vom Hostsystem des SQL Server-Agents in den Skriptnamensbereich eingefügt wird. Das Objekt verfügt über zwei Methoden: Print und CreateObject. Das folgende Beispiel veranschaulicht, wie ActiveX-Skripts in Visual Basic Scripting Edition (VBScript) funktionieren.

' VBScript example for ActiveX Scripting job step
' Create a Dmo.Server object. The object connects to the
' server on which the script is running.

Set oServer = CreateObject("SQLDmo.SqlServer")
oServer.LoginSecure = True
oServer.Connect "(local)"
'Disconnect and destroy the server object
oServer.DisConnect
Set oServer = nothing

Das folgende Beispiel zeigt den gleichen Task in JScript:

// JScript example for ActiveX Scripting job step
// Create a Dmo.Server object. The object connects to the
// server on which the script is running.

var oServer = CreateObject("SQLDmo.SqlServer");
oServer.LoginSecure = true;
oServer.Connect("(local)");

//Disconnect and destroy the server object
oServer.DisConnect();
oServer.Close(); 

So erstellen Sie einen ActiveX-Skript-Auftragsschritt

Replikationsauftragsschritte

Wenn Sie Veröffentlichungen und Abonnements mithilfe der Replikation erstellen, werden standardmäßig Replikationsaufträge erstellt. Der Typ der erstellten Aufträge wird durch den Typ der Replikation (Snapshot, Transaktion oder Merge) und die verwendeten Optionen bestimmt.

Replikationsauftragsschritte aktivieren einen dieser Replikations-Agents:

  • Snapshot-Agent (Snapshotauftrag)

  • Protokolllese-Agent (Protokollleserauftrag)

  • Verteilungs-Agent (Verteilungsauftrag)

  • Merge-Agent (Mergeauftrag)

  • Warteschlangenlese-Agent (Warteschlangenleser-Auftrag)

Beim Einrichten der Replikation können Sie zwischen drei Ausführungsarten für die Replikations-Agents wählen: immer nach dem Start des SQL Server-Agents, bei Bedarf oder gemäß einem Zeitplan. Weitere Informationen zu Replikations-Agents finden Sie unter Replikations-Agents (Übersicht).

Analysis Services-Auftragsschritte

Vom SQL Server-Agent werden zwei unterschiedliche Typen von Analysis Services-Auftragsschritten unterstützt: Befehlsauftragsschritte und Abfrageauftragsschritte.

Analysis Services-Befehlsauftragsschritte

Wenn Sie einen Analysis Services-Befehlsauftragsschritt erstellen, müssen Sie folgende Schritte durchführen:

  • Identifizieren der OLAP-Datenbank, in der Sie den Auftragsschritt ausführen.

  • Eingeben der auszuführenden Anweisung. Bei der Anweisung muss es sich um eine Execute-Methode von XML für Analysis Services handeln. Die Anweisung enthält möglicherweise keinen vollständigen SOAP-Umschlag (Simple Object Access Protocol) und keine XML für die Analysis Services-Methode Discover . Während SQL Server Management Studio vollständige SOAP-Umschläge und die Discover-Methode unterstützt, ist das bei SQL Server-Agent-Auftragsschritten nicht der Fall.

Weitere Informationen zu XML für Analysis Services finden Sie unter Übersicht über XMLA for Analysis (XMLA).

Analysis Services-Abfrageauftragsschritte

Wenn Sie einen Analysis Services-Abfrageauftragsschritt erstellen, müssen Sie folgende Schritte durchführen:

  • Identifizieren der OLAP-Datenbank, in der Sie den Auftragsschritt ausführen.

  • Eingeben der auszuführenden Anweisung. Bei der Anweisung muss es sich um eine MDX-Abfrage handeln (Multidimensional Expressions, mehrdimensionale Ausdrücke).

Weitere Informationen zu MDX finden Sie unter Grundlegendes zu MDX-Abfragen (MDX).

Integration Services-Pakete

Wenn Sie einen Integration Services-Paketauftragsschritt erstellen, müssen Sie folgende Schritte durchführen:

  • Identifizieren der Paketquelle.

  • Identifizieren des Paketspeicherorts.

  • Identifizieren der Konfigurationsdateien, wenn diese für das Paket erforderlich sind.

  • Identifizieren der Befehlsdateien, wenn diese für das Paket erforderlich sind.

  • Identifizieren der für das Paket zu verwendenden Überprüfung. Sie können beispielsweise angeben, dass das Paket signiert werden oder eine bestimmte Paket-ID aufweisen muss.

  • Identifizieren der Datenquellen für das Paket.

  • Identifizieren der Protokollanbieter für das Paket.

  • Angeben von Variablen und Werten, die vor dem Ausführen des Pakets festgelegt werden.

  • Identifizieren von Ausführungsoptionen.

  • Hinzufügen oder Ändern von Befehlszeilenoptionen.

Informationen zum Erstellen von Auftragsschritten, von denen Integration Services-Pakete ausgeführt werden, finden Sie unter Vorgehensweise: Ausführen eines Pakets.