Jämföra skriptaktiviteten och skriptkomponenten

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Script-uppgiften, som finns i Control Flow-fönstret hos Integration Services-designern, och Script-komponenten, som finns i Data Flow-fönstret, har mycket olika syften i ett Integration Services-paket. Uppgiften är ett allmänt kontrollflödesverktyg, där komponenten fungerar som källa, transformation eller destination i dataflödet. Trots deras olika syften har dock Script-uppgiften och Script-komponenten vissa likheter i de kodningsverktyg de använder och de objekt i paketet som de gör tillgängliga för utvecklaren. Att förstå deras likheter och skillnader kan hjälpa dig att använda både uppgiften och komponenten mer effektivt.

Likheter mellan Skriptuppgiften och Skriptkomponenten

Skriptuppgiften och Skriptkomponenten delar följande gemensamma funktioner.

Feature Description
Två designtidslägen I både uppgiften och komponenten börjar du med att specificera egenskaper i editorn och byter sedan till utvecklingsmiljön för att skriva kod.
Microsoft Visual Studio Verktyg för applikationer (VSTA) Både uppgiften och komponenten använder samma VSTA-IDE och stödjer kod skriven i antingen Microsoft Visual Basic eller Microsoft Visual C#.
Förkompilerade manus Från och med SQL Server 2008 Integration Services (SSIS) är alla skript förkompilerade. I tidigare versioner kunde man specificera om skripten var förkompilerade.

Skriptet är förkompilerat till binär kod, vilket möjliggör snabbare exekvering, men till priset av ökad paketstorlek.
Debugging Både uppgiften och komponenten stödjer brytpunkter och stegvis genom kod medan man felsöker i designmiljön. För mer information, se Kodning och felsökning av skriptuppgiften samt Kodning och felsökning av skriptkomponenten.

Skillnader mellan Script Task och Script Component

Skriptuppgiften och Skriptkomponenten har följande anmärkningsvärda skillnader.

Feature Skriptuppgift Skriptkomponent
Styrflöde / Dataflöde Skriptuppgiften konfigureras på designerns kontrollflödesflik och körs utanför paketets dataflöde. Script-komponenten konfigureras på designerns Data Flow-sida och representerar en källa, transformation eller destination i Data Flow-uppgiften.
Purpose En Script-uppgift kan utföra nästan vilken allmän uppgift som helst. Du måste specificera om du vill skapa en källa, transformation eller destination med Script-komponenten.
Execution En skriptuppgift kör anpassad kod vid någon punkt i paketarbetsflödet. Om du inte lägger den i en loopcontainer eller en event handler, körs den bara en gång. En Script-komponent körs också en gång, men vanligtvis kör den sin huvudsakliga bearbetningsrutin en gång för varje rad data i dataflödet.
Editor Script Task Editor har tre sidor: Generell, Script och Expressions. Endast ReadOnlyVariables och ReadWriteVariables samt ScriptLanguage-egenskaperna påverkar direkt koden du kan skriva. Script Transformation Editor har upp till fyra sidor: Input Columns, Input and Outputs, Script och Connection Managers. Metadata och egenskaper som du konfigurerar på varje sida bestämmer vilka medlemmar i basklasserna som automatiskt genereras för din kodning.
Interaktion med paketet I koden som skrivits för en Script-uppgift använder du Dts-egenskapen för att komma åt andra funktioner i paketet. Dts-egenskapen tillhör ScriptMain-klassen. I skriptkomponentkod använder du typade accessor-egenskaper för att komma åt vissa paketfunktioner som variabler och anslutningshanterare.

PreExekver-metoden kan endast komma åt skrivskyddade variabler. PostExekver-metoden kan komma åt både skrivskyddade och läs-/skrivvariabler.

För mer information om dessa metoder, se Kodning och felsökning av skriptkomponenten.
Användning av variabler Script-uppgiften använder egenskapen Variables hos Dts-objektet för att komma åt variabler som är tillgängliga via uppgiftens ReadOnlyVariables och ReadWriteVariables egenskaperna. Ett exempel:

[Visual Basic]

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

[C#]

string myVar;
myVar = Dts.Variables["MyStringVariable"].Value.ToString();
Skriptkomponenten använder typade accessor-egenskaper från den autogenererade baserade klassen, skapad från komponentens ReadOnlyVariables och ReadWriteVariables egenskaperna. Ett exempel:

[Visual Basic]

Dim myVar as String
myVar = Me.Variables.MyStringVariable

[C#]

string myVar;
myVar = this.Variables.MyStringVariable;
Användning av anslutningar Script-uppgiften använder egenskapen Connections hos Dts-objektet för att komma åt anslutningshanterare som definierats i paketet. Ett exempel:

[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);
Skriptkomponenten använder typade accessor-egenskaper från den autogenererade basklassen, skapade från listan över anslutningshanterare som användaren anger på sidan Connection Managers. Ett exempel:

[Visual Basic]

Dim connMgr As IDTSConnectionManager100
connMgr = Me.Connections.MyADONETConnection

[C#]

IDTSConnectionManager100 connMgr;
connMgr = this.Connections.MyADONETConnection;
Utlösa händelser Script-uppgiften använder egenskapen Events hos Dts-objektet för att ta upp händelser. Ett exempel:

[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);
Skriptkomponenten genererar fel, varningar och informationsmeddelanden genom att använda de metoder i gränssnittet IDTSComponentMetaData100 som returneras av egenskapen ComponentMetaData . Ett exempel:

[Visual Basic]

Dim myMetadata as IDTSComponentMetaData100 myMetaData = Me.ComponentMetaData myMetaData.FireError(...)
Logging Script-uppgiften använder LogDts-objektets metod för att logga information till aktiverade loggleverantörer. Ett exempel:

[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);
Skriptkomponenten använder Log metoden med den autogenererade basklassen för att logga information till aktiverade loggleverantörer. Ett exempel:

[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);
Returnerar resultat Script-uppgiften använder både egenskapen TaskResult och den valfria ExecutionValue egenskapen för Dts-objektet för att meddela runtimen om dess resultat. Script-komponenten körs som en del av Data Flow-uppgiften och rapporterar inte resultat med någon av dessa egenskaper.