Porovnání úlohy skriptu a komponenty skriptu

Platí pro:SQL Server SSIS Integration Runtime v rámci Azure Data Factory

Úloha Script, dostupná v okně Control Flow v návrhu Integration Services, a komponenta Script, dostupná v okně Tok dat, mají v balíčku Integration Services velmi odlišné účely. Úkol je univerzální nástroj pro řízení toků, zatímco komponenta slouží jako zdroj, transformace nebo cíl v datovém toku. Navzdory odlišným účelům mají však úloha Script a komponenta Script určité podobnosti v programovacích nástrojích, které používají, a objektech v balíčku, které vývojářům zpřístupňují. Pochopení jejich podobností a rozdílů vám může pomoci efektivněji využívat jak úkol, tak komponent.

Podobnosti mezi úlohou skriptu a složkou skriptu

Úloha Script a komponenta Script sdílejí následující společné vlastnosti.

funkce Description
Dva režimy návrhového času V úlohě i komponentě začínáte zadáním vlastností v editoru a pak přepnete do vývojového prostředí a píšete kód.
Microsoft Visual Studio Nástroje pro aplikace (VSTA) Jak úloha, tak komponenta používají stejné VSTA IDE a podporují kód napsaný buď ve Microsoft Visual Basic, nebo Microsoft Visual C#.
Předkompilované skripty Od SQL Server 2008 Integration Services (SSIS) jsou všechny skripty předkompilovány. V dřívějších verzích jste mohli specifikovat, zda jsou skripty předkompilované.

Skript je předkompilován do binárního kódu, což umožňuje rychlejší vykonání, ale za cenu zvětšení velikosti balíčku.
Debugging Jak úloha, tak komponenta podporují breakpointy a krokové procházení kódu při ladění v návrhovém prostředí. Pro více informací viz Kódování a ladění skriptové úlohy a Kódování a ladění skriptní komponenty.

Rozdíly mezi skriptovou úlohou a skriptovou složkou

Úloha Script a komponenta Script mají následující významné rozdíly.

funkce skriptová úloha Komponenta skriptu
Řídicí tok / Tok dat Skriptová úloha je nakonfigurována na záložce Control Flow v designéru a běží mimo datový tok balíčku. Skriptová komponenta je konfigurována na stránce Tok dat designéra a představuje zdroj, transformaci nebo cíl v úlohě Tok dat.
Purpose Skriptní úkol může zvládnout téměř jakýkoli obecný úkol. Musíte specifikovat, zda chcete vytvořit zdrojový kód, transformaci nebo cíl pomocí komponenty Script.
Execution Skriptní úloha spustí vlastní kód v určitém bodě pracovního toku balíčku. Pokud ji nedáš do loop kontejneru nebo event handleru, spustí se to jen jednou. Komponenta Script také běží jednou, ale obvykle spustí hlavní zpracovatelskou rutinu jednou pro každý řádek dat v datovém toku.
Editor Editor úloh skriptů má tři stránky: Obecné, Skriptové a Výrazy. Pouze vlastnosti ReadOnlyVariables , ReadWriteVariables a ScriptLanguage přímo ovlivňují kód, který můžete napsat. Editor transformace skriptů má až čtyři stránky: vstupní sloupce, vstupy a výstupy,skripty a správce připojení. Metadata a vlastnosti, které na každé z těchto stránek nastavíte, určují členy základních tříd, které jsou automaticky generovány pro vaše použití v kódování.
Interakce s balíčkem V kódu napsaném pro skriptní úkol používáte vlastnost DTS k přístupu k dalším funkcím balíčku. Vlastnost Dts je členem třídy ScriptMain . V kódu komponent Script používáte typované vlastnosti accessoru k přístupu k určitým funkcím balíčku, jako jsou proměnné a správci spojení.

Metoda PreExecute umožňuje přístup pouze k proměnným pouze pro čtení. Metoda PostExecute umožňuje přístup jak k proměnným pouze pro čtení, tak k čtení/zápisu.

Pro více informací o těchto metodách viz Kódování a ladění skriptní komponenty.
Použití proměnných Skriptní úloha využívá Variables vlastnost objektu DTS k přístupu k proměnným, které jsou dostupné prostřednictvím úlohy ReadOnlyVariables a ReadWriteVariables vlastností. Příklady:

[Visual Basic]

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

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
Skriptová komponenta využívá typované vlastnosti accessoru automaticky generované třídy, vytvořené z vlastností ReadWriteVariables a ReadOnlyVariables komponenty. Příklady:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Použití spojení Úloha Script využívá Connections vlastnost objektu DTS k přístupu ke správcům spojení definovaným v balíčku. Příklady:

[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);
Skriptová komponenta používá typované vlastnosti přístupových modulů automaticky generované základní třídy, vytvořené ze seznamu správců spojení zadaných uživatelem na stránce Správce spojení editoru. Příklady:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Vyvolávání událostí Úloha Script využívá Events vlastnost objektu DTS k vyvolání událostí. Příklady:

[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);
Skriptová komponenta vyvolává chyby, varování a informační zprávy pomocí metod IDTSComponentMetaData100 rozhraní vrácených vlastností ComponentMetaData . Příklady:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Logging Skriptní úloha využívá metodu Log objektu Dts k zaznamenání informací povoleným poskytovatelům logů. Příklady:

[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);
Skriptová komponenta využívá metodu Log automaticky generované základní třídy k zaznamenání informací oprávněným poskytovatelům logů. Příklady:

[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);
Vrácení výsledků Skriptní úloha využívá jak vlastnost, TaskResult tak volitelnou ExecutionValue vlastnost objektu Dts k oznámení výsledků běhu za běhu. Skriptová komponenta běží jako součást úlohy Tok dat a nehlásí výsledky pomocí žádné z těchto vlastností.