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.
- Microsoft ActiveX-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 Auftragsschrittes 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 Microsoft 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 Sicherheitsüberlegungen für SQL Server.
Auftragsschrittprotokolle
Vom SQL Server-Agent können einige Auftragsschritte in eine Ausgabedatei geschrieben werden, entweder in eine Betriebssystemdatei oder die sysjobstepslogs-Tabelle in der msdb-Datenbank. 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.
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\90\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.
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 Auftragsschrittes beziehungsweise als SQL Server-Agent-Dienstkonto ausgeführt, wenn der Besitzer des Auftragsschrittes 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 eingebettete GO-Befehle enthalten. |
So erstellen Sie einen Transact-SQL-Auftragsschritt
So definieren Sie die Optionen für Transact-SQL-Auftragsschritte
ActiveX-Skript-Auftragsschritte
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 Auftragsschrittes um ein ActiveX-Skript, können Sie das SQLActiveScriptHost-Objekt verwenden, um Ausgaben für das Verlaufsprotokoll des Auftragsschrittes auszudrucken 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 besitzt 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
Sub main()
' Create a Smo.Server object. The object connects to the
' server on which the script is running.
Set SmoServer = _
CreateObject ("Microsoft.SqlServer.Management.Smo.Server")
' Check the number of active connections for AdventureWorks.
ConnectionCount = _
SmoServer.GetActiveDbConnectionCount("AdventureWorks")
' If there are active connections, close the connections.
If ConnectionCount > 0 Then
' Log in the job history that this job step dropped
' connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks." + crLf )
' Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks")
End If
End Sub
Das folgende Beispiel zeigt den gleichen Task in JScript:
// JScript example for ActiveX job step
function main() {
// Create a Smo.Server object. The object connects to the
// server on which the script is running.
var SmoServer =
CreateObject("Microsoft.SqlServer.Management.Smo.Server");
// Check the number of active connections for AdventureWorks.
var ConnectionCount =
SmoServer.GetActiveDbConnectionCount("AdventureWorks");
// If there are active connections, close the connections.
if (ConnectionCount > 0) {
// Log in the job history that this job step dropped
// connections to AdventureWorks.
Print ("Dropping connections to AdventureWorks.\n");
// Drop all active connections to AdventureWorks.
SmoServer.DropAllActiveDbConnections("AdventureWorks");
}
}
So erstellen Sie einen ActiveX-Skript-Auftragsschritt
Replikationsauftragsschritte
Wenn Sie Publikationen 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 angeben, dass die Replikations-Agents nach dem Starten des SQL Server-Agents entweder ständig, bei Bedarf oder gemäß einem Zeitplan ausgeführt werden. 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, ist Folgendes notwendig:
- 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 darf keinen kompletten SOAP-Umschlag und keine Discover-Methode von XML für Analysis Services enthalten. Beachten Sie, dass SQL Server Management Studio komplette SOAP-Umschläge und die Discover-Methode unterstützt, dies für SQL Server-Agent-Auftragsschritte dagegen nicht gilt.
Weitere Informationen zu XML für Analysis Services finden Sie unter XML for Analysis Overview (XMLA).
Analysis Services-Abfrageauftragsschritte
Wenn Sie einen Analysis Services-Abfrageauftragsschritt erstellen, ist Folgendes notwendig:
- 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, multidimensionale Ausdrücke).
Weitere Informationen zu MDX finden Sie unter Grundlegendes zu MDX-Abfragen (MDX).
Integration Services-Pakete
Wenn Sie einen Integration Services-Paketauftragsschritt erstellen, ist Folgendes notwendig:
- 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 mit einem SQL Server-Agent-Auftrag
Siehe auch
Konzepte
Andere Ressourcen
sysjobstepslogs (Transact-SQL)
sp_add_job (Transact-SQL)