Porównywanie zadania skryptu i składnika skryptu

Dotyczy:SQL Server Środowisko SSIS Integration Runtime w usłudze Azure Data Factory

Zadanie Script, dostępne w oknie Control Flow projektanta usług integracyjnych, oraz komponent Script, dostępny w oknie Przepływ danych, mają zupełnie inne zastosowania w pakiecie Integration Services. Zadanie to jest narzędzie do sterowania przepływem ogólnego przeznaczenia, podczas gdy komponent pełni rolę źródła, transformacji lub miejsca docelowego w przepływie danych. Mimo różnych zastosowań, zadanie skryptowe i komponent skryptowy mają pewne podobieństwa w narzędziach programistycznych, których używają, oraz obiektach w pakiecie, które udostępniają programistom. Zrozumienie ich podobieństw i różnic może pomóc ci efektywniej wykorzystać zarówno zadanie, jak i komponent.

Podobieństwa między zadaniem Script a komponentem script

Zadanie Script oraz komponent Script mają następujące wspólne cechy.

Funkcja Description
Dwa tryby czasu projektowego Zarówno w zadaniu, jak i w komponencie zaczynasz od określenia właściwości w edytorze, a następnie przechodzisz do środowiska programistycznego, aby pisać kod.
Microsoft Visual Studio Narzędzia do zastosowań (VSTA) Zarówno zadanie, jak i komponent korzystają z tego samego IDE VSTA i wspierają kod napisany w Microsoft Visual Basic lub Microsoft Visual C#.
Skrypty prekompilowane Począwszy od SQL Server 2008 Integration Services (SSIS), wszystkie skrypty są wstępnie kompilowane. W wcześniejszych wersjach można było określić, czy skrypty były wstępnie skompilowane.

Skrypt jest wstępnie kompilowany do kodu binarnego, co pozwala na szybsze wykonywanie, ale kosztem zwiększania rozmiaru pakietu.
Debugging Zarówno zadanie, jak i komponent obsługują punkty przerwania i przechodzenie przez kod podczas debugowania w środowisku projektowym. Więcej informacji można znaleźć w artykule Coding and Debuggging the Script Task oraz Coding and Debuggging the Script Component.

Różnice między zadaniem Script a komponentem script

Zadanie Script i komponent Script mają następujące istotne różnice.

Funkcja Zadanie skryptu Składnik skryptu
Przepływ sterowania / przepływ danych Zadanie skryptowe jest skonfigurowane na zakładce Control Flow w projektantze i działa poza przepływem danych pakietu. Komponent Script jest skonfigurowany na stronie Przepływ danych projektanta i reprezentuje źródło, transformację lub miejsce docelowe w zadaniu Przepływ danych.
Purpose Zadanie skryptowe może wykonać niemal każde ogólne zadanie. Musisz określić, czy chcesz utworzyć źródło, transformację czy miejsce docelowe za pomocą komponentu Script.
Execution Zadanie skryptowe uruchamia niestandardowy kod w pewnym momencie przepływu pracy pakietu. Jeśli nie włożysz go do kontenera loop lub obsługi zdarzeń, uruchamia się tylko raz. Komponent skryptowy również uruchamia się raz, ale zazwyczaj uruchamia swoją główną procedurę przetwarzania raz dla każdego wiersza danych w przepływie danych.
Editor Edytor zadań skryptowych składa się z trzech stron: ogólnych, skryptowych i wyrażeń. Tylko właściwości ReadOnlyVariables , ReadWriteVariables i ScriptLanguage bezpośrednio wpływają na kod, który możesz napisać. Edytor transformacji skryptów ma do czterech stron: kolumny wejściowe, wejścia i wyjścia, menedżery skryptów oraz połączeń. Metadane i właściwości, które konfigurujesz na każdej z tych stron, określają członków klas bazowych, które są automatycznie generowane do twojego użytku w programowaniu.
Interakcja z pakietem W kodzie napisanym dla zadania skryptowego używasz właściwości DTS , aby uzyskać dostęp do innych funkcji pakietu. Własność DTS należy do klasy ScriptMain . W kodzie komponentów skryptowych używasz typowanych właściwości accessorów, aby uzyskać dostęp do określonych funkcji pakietu, takich jak zmienne i menedżery połączeń.

Metoda PreExecute umożliwia dostęp tylko do zmiennych tylko do odczytu. Metoda PostExecute umożliwia dostęp zarówno do zmiennych tylko do odczytu, jak i do odczytu/zapisu.

Więcej informacji o tych metodach można znaleźć w artykule Kodowanie i debugowanie komponentu skryptowego.
Wykorzystanie zmiennych Zadanie skryptowe wykorzystuje Variables właściwości obiektu DTS do dostępu do zmiennych dostępnych przez zadania ReadOnlyVariables i ReadWriteVariables właściwości. Przykład:

[Visual Basic]

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

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
Komponent Script wykorzystuje typowe właściwości accessorów automatycznie generowanej klasy opartej na przepisach, utworzonych na podstawie właściwości komponentu ReadOnlyVariables i ReadWriteVariables właściwości. Przykład:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Wykorzystanie połączeń Zadanie skryptowe wykorzystuje właściwość Connections obiektu DTS do dostępu do menedżerów połączeń zdefiniowanych w pakiecie. Przykład:

[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);
Komponent Script wykorzystuje typowe właściwości accessorów automatycznie generowanej klasy bazowej, tworzone z listy menedżerów połączeń wpisanych przez użytkownika na stronie Menedżerów Połączeń w edytorze. Przykład:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Wywoływanie zdarzeń Zadanie Script wykorzystuje Events właściwość obiektu DTS do wywoływania zdarzeń. Przykład:

[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);
Komponent skryptowy generuje błędy, ostrzeżenia i komunikaty informacyjne, wykorzystując metody interfejsu IDTSComponentMetaData100 zwracane przez tę ComponentMetaData właściwość. Przykład:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Logging Zadanie skryptowe wykorzystuje metodę Log obiektu DTS do logowania informacji do włączonych dostawców logów. Przykład:

[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);
Komponent Script wykorzystuje metodę Log automatycznie generowanej klasy bazowej do logowania informacji do włączonych dostawców logów. Przykład:

[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);
Zwracanie wyników Zadanie skryptowe wykorzystuje zarówno TaskResult właściwość, jak i opcjonalną ExecutionValue właściwość obiektu DTS , aby powiadomić czas wykonywania o swoich wynikach. Komponent Script działa jako część zadania Przepływ danych i nie raportuje wyników korzystając z żadnej z tych właściwości.