Verwalten von Auftragsschritten

Gilt für:SQL ServerAzure SQL Managed Instance

Wichtig

In Azure SQL Managed Instance werden derzeit die meisten, aber nicht alle, SQL Server-Agent-Features unterstützt. Details dazu finden Sie unter T-SQL-Unterschiede zwischen Azure SQL Managed Instance und SQL Server.

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.

  • Microsoft ActiveX-Skripts.

  • Replikationstasks.

  • Analysis Services Aufgaben.

  • 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 (Datenbank-Engine).

Auftragsschrittprotokolle

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 Aufgaben.

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.

Hinweis

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".

    Hinweis

    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.

Transact-SQL-Auftragsschritte

Beim Erstellen eines Transact-SQL-Auftragsschritts müssen Sie Folgendes tun:

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

  • Geben Sie die auszuführende Transact-SQL-Anweisung ein. 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.

Transact-SQL-Auftragsschritte verwenden keine SQL Server-Agent-Proxys. 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).

Hinweis

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

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 SQL Server PowerShell.

ActiveX-Skript-Auftragsschritte

Wichtig

Der ActiveX-Skriptauftragsschritt wird in einer zukünftigen Version von Microsoft SQL Server aus dem SQL Server-Agent entfernt. Nutzen Sie diese Funktionen bei Neuentwicklungen nicht mehr, und planen Sie die Änderung von Anwendungen, die diese Funktion zurzeit verwenden.

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  

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 (Momentaufnahme, Transaktion oder Merge) und die verwendeten Optionen bestimmt.

Replikationsauftragsschritte aktivieren einen dieser Replikations-Agents:

  • Momentaufnahme-Agent (Momentaufnahmeauftrag)

  • 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

SQL Server Agent unterstützt zwei unterschiedliche Typen von Analysis Services-Auftragsschritten: 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 XML-Code für die Execute-Methode in Analysis Services handeln. Die Anweisung darf keinen vollständigen SOAP-Umschlag oder XML-Code für eine Discover-Methode für Analysis Services enthalten. Hinweis: 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.

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 zur MDX-Anweisung (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.

Hinweis: Wenn Sie das Paket im SSIS-Katalog bereitgestellt und Sie SSIS-Katalog als Paketquelle angegeben haben, werden viele dieser Konfigurationsinformationen automatisch vom Paket abgerufen. Auf der Registerkarte Konfiguration können Sie die Umgebung, Parameterwerte, Verbindungs-Manager-Werte und Eigenschaftenüberschreibungen angeben und ob das Paket in einer 32-Bit-Laufzeitumgebung ausgeführt wird.

Informationen zum Erstellen von Auftragsschritten, von denen Integration Services -Pakete ausgeführt werden, finden Sie unter Aufträge des SQL Server-Agents für Pakete.

BESCHREIBUNG Thema
Beschreibt, wie ein Auftragsschritt mit einem ausführbaren Programm erstellt wird. Erstellen eines CmdExec-Auftragsschritts
Beschreibt, wie SQL Server -Agent-Berechtigungen zurückgesetzt werden. Konfigurieren eines Benutzers zum Erstellen und Verwalten von SQL Server-Agent-Aufträgen
Diese Aufgabe beschreibt, wie ein Transact-SQL-Auftragsschritt erstellt wird. Erstellen eines Transact-SQL-Auftragsschritts
Beschreibt, wie Optionen für Transact-SQL-Auftragsschritte für den Microsoft SQL Server -Agent erstellt werden. Definieren von Optionen für Transact-SQL-Auftragsschritte
Beschreibt, wie ein ActiveX-Skript-Auftragsschritt erstellt wird. Create an ActiveX Script Job Step
Beschreibt, wie SQL Server -Agent-Auftragsschritte erstellt und definiert werden, die SQL Server Analysis Services-Befehle und -Abfragen ausführen. Erstellen eines Analysis Services-Auftragsschritts
Beschreibt, welche Aktion SQL Server ausführen sollte, wenn während der Auftragsausführung ein Fehler auftritt. Set Job Step Success or Failure Flow
Beschreibt, wie Auftragsschrittdetails im Dialogfeld Auftragsschritt-Eigenschaften angezeigt werden. View Job Step Information
Beschreibt, wie ein Auftragsschrittprotokoll des SQL Server -Agents gelöscht wird. Löschen eines Auftragsschrittprotokolls

Weitere Informationen

sysjobstepslogs (Transact-SQL)
Erstellen von Aufträgen
sp_add_job (Transact-SQL)