Freigeben über


Vergleich zwischen Skripttask und Skriptkomponente

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 Codieren und Debuggen des Skripttasks und [Codieren und Debuggen der Skriptkomponente](.). /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.

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 ReadOnlyVariables Eigenschaften und ReadWriteVariablesund 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 ein Skripttask verwenden Sie die Dts-Eigenschaft, um auf andere Funktionen des Pakets zuzugreifen. Die Dts-Eigenschaft ist ein Member der ScriptMain-Klasse. Im Skriptkomponentencode verwenden Sie typisierte Accessoreigenschaften für den Zugriff auf bestimmte Paketfunktionen wie Variablen und Verbindungs-Manager.

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

Weitere Informationen zu diesen Methoden finden Sie unter [Codieren und Debuggen der Skriptkomponente](.). /extending-packages-scripting/data-flow-script-component/coding-and-debugging-the-script-component.md.
Verwenden von Variablen Der Skripttask verwendet die Variables -Eigenschaft des Dts -Objekts, um auf Variablen zuzugreifen, die über die Eigenschaften und ReadWriteVariables der Aufgabe ReadOnlyVariables verfügbar sind. Beispiel:

[VB]

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:

[VB]

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:

[VB]

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:

[VB]

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:

[VB]

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:

[VB]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Protokollierung Der Skripttask verwendet die Log -Methode des Dts -Objekts, um Informationen für aktivierte Protokollanbieter zu protokollieren. Beispiel:

[VB]

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:

[VB]

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 sowohl die TaskResult -Eigenschaft als auch die optionale ExecutionValue Eigenschaft des Dts -Objekts, um die Laufzeit ü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
Verwenden eines Skripttasks in SQL Server Integration Services SSIS zum Herstellen einer Verbindung mit einem Webdienst