Freigeben über


Vergleich zwischen Skripttask und Skriptkomponente

Gilt für: SQL Server SSIS Integration Runtime in Azure Data Factory

Der Skripttask, der im Fenster „Ablaufsteuerung“ des Integration Services-Designers zur Verfügung steht, und die Skriptkomponente im Fenster „Datenfluss“ dienen in einem Integration Services-Paket völlig unterschiedlichen Zwecken. Der Task stellt ein allgemeines Ablaufsteuerungstool dar, während die Komponente als Quelle, Transformation oder Ziel im Datenfluss dient. Trotz ihres unterschiedlichen Zwecks verfügen der Skripttask und die Skriptkomponente jedoch über Gemeinsamkeiten hinsichtlich der verwendeten Codierungstools sowie der Objekte im Paket, die sie dem Entwickler bereitstellen. Die Unterschiede und Gemeinsamkeiten zu kennen, kann Ihnen dabei helfen, Task und Komponente effektiver einzusetzen.

Gemeinsamkeiten zwischen Skripttask und Skriptkomponente

Skripttask und Skriptkomponente verfügen über folgende gemeinsame Funktionen:

Funktion BESCHREIBUNG
Zwei Entwurfszeitmodi Bei Task und Komponente legen Sie zunächst im Editor Eigenschaften fest und wechseln anschließend in die Entwicklungsumgebung, um Code zu schreiben.
Microsoft Visual Studio Tools for Applications (VSTA) Task und Komponente verwenden dieselbe VSTA IDE und unterstützen in Microsoft Visual Basic oder Microsoft Visual C# geschriebenen Code.
Vorkompilierte Skripts Ab SQL Server 2008 Integration Services (SSIS) werden alle Skripts vorkompiliert. In früheren Versionen konnten Sie festlegen, ob Skripts vorkompiliert werden sollten.

Das Skript wird in binärem Code vorkompiliert. Dies ermöglicht eine schnellere Ausführung, vergrößert jedoch das Paket.
Debuggen Beim Debuggen in der Entwurfsumgebung unterstützen der Task und die Komponente Breakpoints und die schrittweise Ausführung von Code. Weitere Informationen finden Sie unter Coding and Debugging the Script Task (Codieren und Debuggen des Skripttasks) und Coding and Debugging the Script Component (Codieren und Debuggen der Skriptkomponente).

Unterschiede zwischen Skripttask und Skriptkomponente

Skripttask und Skriptkomponente weisen folgende wichtige Unterschiede auf:

Funktion Skripttask Skriptkomponente
Ablaufsteuerung/Datenfluss Der Skripttask wird auf der Registerkarte Ablaufsteuerung des Designers konfiguriert und außerhalb des Paketdatenflusses ausgeführt. Die Skriptkomponente wird auf der Seite Datenfluss des Designers konfiguriert und stellt eine Quelle, Transformation oder ein Ziel im Datenflusstask dar.
Zweck Ein Skripttask kann fast jede allgemeine Aufgabe ausführen. Sie müssen festlegen, ob Sie mit der Skriptkomponente eine Quelle, Transformation oder ein Ziel erstellen möchten.
Ausführung Ein Skripttask führt benutzerdefinierten Code an einem bestimmten Punkt im Paketworkflow aus. Er wird nur einmal ausgeführt, sofern Sie ihn nicht in einem Schleifencontainer oder Ereignishandler platzieren. Auch eine Skriptkomponente wird einmal ausgeführt. Sie führt aber ihre Verarbeitungsroutine meist für jede Datenzeile im Datenfluss aus.
Editor Der Skripttask-Editor weist drei Seiten auf: Allgemein, Skript und Ausdrücke. Nur die Eigenschaften ReadOnlyVariables und ReadWriteVariables und ScriptLanguage wirken sich direkt auf den Code aus, den Sie schreiben können. Der Transformations-Editor für Skripterstellung verfügt über maximal vier Seiten: Eingabespalten, Eingaben und Ausgaben, Skript sowie Verbindungs-Manager. Die Metadaten und Eigenschaften, die Sie auf diesen Seiten konfigurieren, legen die Member der Basisklassen fest, die für Sie bei der Codierung automatisch generiert werden.
Interaktion mit dem Paket Im Code für einen Skripttask verwenden Sie die Dts-Eigenschaft, um auf andere Funktionen des Pakets zuzugreifen. Die Dts-Eigenschaft ist ein Mitglied der Klasse ScriptMain. Im Skriptkomponentencode verwenden Sie typisierte Accessoreigenschaften für den Zugriff auf bestimmte Paketfunktionen wie Variablen und Verbindungs-Manager.

Die PreExecute-Methode kann nur auf Variablen für den Lesezugriff zugreifen. Die PostExecute-Methode kann sowohl auf schreibgeschützte Variablen als auch auf Lese-/Schreibvariablen zugreifen.

Weitere Informationen zu diesen Methoden finden Sie unter Coding and Debugging the Script Component (Codieren und Debuggen der Skriptkomponente).
Verwenden von Variablen Der Skripttask verwendet die Variables-Eigenschaft des Dts-Objekts, um auf Variablen zuzugreifen, die über die Eigenschaften ReadOnlyVariables und ReadWriteVariables des Tasks bereitgestellt werden. Beispiel:

[Visual Basic]

Dim myVar as String
myVar = Dts.Variables("MyStringVariable").Value.ToString

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
Die Skriptkomponente verwendet typisierte Accessoreigenschaften der automatisch generierten Basisklasse, die aus den Eigenschaften ReadOnlyVariables und ReadWriteVariables der Komponente erstellt werden. Beispiel:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Verwenden von Verbindungen Der Skripttask nutzt die Connections-Eigenschaft des Dts-Objekts, um auf im Paket definierte Verbindungs-Manager zuzugreifen. Beispiel:

[Visual Basic]

Dim myFlatFileConnection As String
myFlatFileConnection = _ DirectCast(Dts.Connections("Test Flat File Connection").AcquireConnection(Dts.Transaction), _ String)

[C#]

string myFlatFileConnection;
myFlatFileConnection = (Dts.Connections["Test Flat File Connection"].AcquireConnection(Dts.Transaction) as String);
Die Skriptkomponente verwendet typisierte Accessoreigenschaften der automatisch generierten Basisklasse, die aus der Liste von Verbindungs-Managern erstellt werden, die vom Benutzer auf der Seite Verbindungs-Manager des Editors eingegeben wurden. Beispiel:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Auslösen von Ereignissen Der Skripttask verwendet die Events-Eigenschaft des Dts-Objekts, um Ereignisse auszulösen. Beispiel:

[Visual Basic]

Dts.Events.FireError(0, "Event Snippet", _ ex.Message & ControlChars.CrLf & ex.StackTrace, _ "", 0)

[C#]

Dts.Events.FireError(0, "Event Snippet", ex.Message + "\r" + ex.StackTrace, "", 0);
Die Skriptkomponente löst Fehler, Warnungen und Informationsmeldungen mithilfe der Methoden der IDTSComponentMetaData100-Schnittstelle, die von der ComponentMetaData-Eigenschaft zurückgegeben werden, aus. Beispiel:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Protokollierung Der Skripttask verwendet die Log-Methode des Dts-Objekts, um Informationen bei aktivierten Protokollanbietern zu protokollieren. Beispiel:

[Visual Basic]

Dim bt(0) As Byte Dts.Log("Test Log Event", _ 0, _ bt)

[C#]

byte[] bt = new byte[0];
Dts.Log("Test Log Event", 0, bt);
Die Skriptkomponente verwendet die Log-Methode der automatisch generierten Basisklasse, um Informationen bei aktivierten Protokollanbietern zu protokollieren. Beispiel:

[Visual Basic]

Dim bt(0) As Byte

Me.Log("Test Log Event", _

0, _

bt)

[C#]

byte[] bt = new byte[0]; this.Log("Test Log Event", 0, bt);
Zurückgeben von Ergebnissen Der Skripttask verwendet die TaskResult-Eigenschaft sowie die optionale ExecutionValue-Eigenschaft des Dts-Objekts, um die Runtime über die Ergebnisse zu benachrichtigen. Die Skriptkomponente wird als Teil des Datenflusstasks ausgeführt und erstellt keine Ergebnisberichte mit einer dieser Eigenschaften.

Weitere Informationen

Erweitern von Paketen mithilfe des Skripttasks
Erweitern des Datenflusses mit der Skriptkomponente