Koda och felsöka skriptkomponenten

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

I SSIS Designer har skriptkomponenten två lägen: metadatadesignläge och koddesignläge. När du öppnar Script Transformation Editor går komponenten in i metadatadesignläge, där du konfigurerar metadata och sätter komponentegenskaper. Efter att du har ställt in egenskaperna för skriptkomponenten och konfigurerat in- och utdata i metadata-designläge kan du byta till koddesignläge för att skriva ditt anpassade skript. För mer information om metadatadesignläge och koddesignläge, se Konfigurera skriptkomponenten i Script Component Editor.

Skriva skriptet i koddesignläge

Skriptkomponentutvecklingsmiljö

För att skriva ditt skript, klicka på Redigera skriptSkriptsidan i Script Transformation Editor för att öppna Microsoft Visual Studio Tools for Applications (VSTA) IDE:n. VSTA-IDE:n inkluderar alla standardfunktioner i Visual Studio .NET-miljön, såsom den färgkodade Visual Studio redigeraren, IntelliSense och objektbläddrare.

Skriptkoden är skriven i Microsoft Visual Basic eller Microsoft Visual C#. Du specificerar skriptspråket genom att sätta egenskapen ScriptLanguage i Script Transformation Editor. Om du föredrar att använda ett annat programmeringsspråk kan du utveckla en anpassad assembler i ditt valda språk och anropa dess funktionalitet från koden i Script-komponenten.

Skriptet du skapar i Script-komponenten lagras i paketdefinitionen. Det finns ingen separat skriptfil. Därför påverkar användningen av Script-komponenten inte paketdistributionen.

Anmärkning

När du designar paketet skrivs skriptkoden tillfälligt till en projektfil. Eftersom lagring av känslig information i en fil är en potentiell säkerhetsrisk, rekommenderade vi att du inte inkluderar känslig information som lösenord i skriptkoden.

Som standard är Option Strict inaktiverat i IDE:n.

Skriptkomponent-Project-struktur

Kraften i Script-komponenten är att den kan generera infrastrukturkod som minskar mängden kod du måste skriva. Denna egenskap bygger på att indata och utdata samt deras kolumner och egenskaper är fasta och kända i förväg. Därför kan eventuella efterföljande ändringar du gör i komponentens metadata ogiltigförklara den kod du har skrivit. Detta orsakar kompileringsfel under paketets exekvering.

Project Items och klasser i Script Component Project

När du byter till koddesignläge öppnas och visas VSTA-IDE:n ScriptMain-projektobjektet . ScriptMain-projektobjektet innehåller den redigerbara ScriptMain-klassen, som fungerar som ingångspunkt för skriptet och där du skriver din kod. Kodelementen i kursen varierar beroende på vilket programmeringsspråk du valt för Script-uppgiften.

Skriptprojektet innehåller två ytterligare automatiskt genererade skrivskyddade projektobjekt:

  • ComponentWrapper-projektobjektet innehåller tre klasser:

    • UserComponent-klassen, som ärver från ScriptComponent och innehåller de metoder och egenskaper du kommer att använda för att bearbeta data och interagera med paketet. ScriptMain-klassen ärver från UserComponent-klassen.

    • En samlingsklass för anslutningar som innehåller referenser till de anslutningar som valts på sidan Správca pripojení i Script Transformation Editor.

    • En variabelsamlingsklass som innehåller referenser till variablerna som anges i egenskaperna ReadOnlyVariable och ReadWriteVariablesskriptsidan i Script Transformation Editor.

  • Projektobjektet BufferWrapper innehåller en klass som ärver från ScriptBuffer för varje in- och utdata konfigurerad på sidan Input and Outputs i Script Transformation Editor. Var och en av dessa klasser innehåller typade accessoregenskaper som motsvarar de konfigurerade in- och utdatakolumnerna, samt dataflödesbuffertarna som innehåller kolumnerna.

För information om hur man använder dessa objekt, metoder och egenskaper, se Förstå Script Component Object Model. För information om hur man använder metoder och egenskaper hos dessa klasser i en viss typ av skriptkomponent, se avsnittet Ytterligare exempel på skriptkomponenter. Exempelämnena innehåller också kompletta kodexempel.

När du konfigurerar Script-komponenten som en transformation innehåller ScriptMain-projektobjektet följande autogenererade kod. Kodmallen ger också en översikt av Script-komponenten och ytterligare information om hur man hämtar och manipulerar SSIS-objekt, såsom variabler, händelser och kopplingar.

' Microsoft SQL Server Integration Services Script Component  
' Write scripts using Microsoft Visual Basic 2008.  
' ScriptMain is the entry point class of the script.  
  
Imports System  
Imports System.Data  
Imports System.Math  
Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper  
Imports Microsoft.SqlServer.Dts.Runtime.Wrapper  
  
<Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute> _  
<CLSCompliant(False)> _  
Public Class ScriptMain  
    Inherits UserComponent  
  
    Public Overrides Sub PreExecute()  
        MyBase.PreExecute()  
        '  
        ' Add your code here for preprocessing or remove if not needed  
        '  
    End Sub  
  
    Public Overrides Sub PostExecute()  
        MyBase.PostExecute()  
        '  
        ' Add your code here for postprocessing or remove if not needed  
        ' You can set read/write variables here, for example:  
        ' Me.Variables.MyIntVar = 100  
        '  
    End Sub  
  
    Public Overrides Sub Input0_ProcessInputRow(ByVal Row As Input0Buffer)  
        '  
        ' Add your code here  
        '  
    End Sub  
  
End Class  
/* Microsoft SQL Server Integration Services user script component  
*  Write scripts using Microsoft Visual C# 2008.  
*  ScriptMain is the entry point class of the script.*/  
  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Pipeline.Wrapper;  
using Microsoft.SqlServer.Dts.Runtime.Wrapper;  
  
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute]  
public class ScriptMain : UserComponent  
{  
  
    public override void PreExecute()  
    {  
        base.PreExecute();  
        /*  
          Add your code here for preprocessing or remove if not needed  
        */  
    }  
  
    public override void PostExecute()  
    {  
        base.PostExecute();  
        /*  
          Add your code here for postprocessing or remove if not needed  
          You can set read/write variables here, for example:  
          Variables.MyIntVar = 100  
        */  
    }  
  
    public override void Input0_ProcessInputRow(Input0Buffer Row)  
    {  
        /*  
          Add your code here  
        */  
    }  
  
}  

Ytterligare Project-objekt i Script Component Project

Script-komponentprojektet kan inkludera andra objekt än standardobjektet ScriptMain . Du kan lägga till klasser, moduler, kodfiler och mappar i projektet, och du kan använda mappar för att organisera grupper av objekt.

Alla saker du lägger till finns kvar i paketet.

Referenser i Script Component Project

Du kan lägga till referenser till hanterade assemblies genom att högerklicka på Script-uppgiftens projekt i Project Explorer och sedan klicka på Add Reference. För mer information, se Referering till andra assemblies i skriptlösningar.

Anmärkning

Du kan se project-referenser i VSTA-IDE i Class View eller i Project Explorer. Du öppnar något av dessa fönster från Visa-menyn . Du kan lägga till en ny referens från Project-menyn, från Project Explorer eller från Class View.

Interaktion med paketet i skriptkomponenten

Det anpassade skriptet som du skriver i Script-komponenten kan komma åt och använda variabler och anslutningshanterare från det innehållande paketet via starkt typade accessorer i de automatiskt genererade basklasserna. Du måste dock konfigurera både variabler och anslutningshanterare innan du går in i koddesignläge om du vill göra dem tillgängliga för ditt skript. Du kan också skapa händelser och logga från din skriptkomponentkod.

De autogenererade projektobjekten i Script-komponentprojektet tillhandahåller följande objekt, metoder och egenskaper för interaktion med paketet.

Paketfunktion Åtkomstmetod
Variables Använd de namngivna och typade accessor-egenskaperna i Variables-samlingsklassen i ComponentWrapper-projektobjektet , exponerat via Variables-egenskapen i ScriptMain-klassen .

PreExekver-metoden kan endast komma åt skrivskyddade variabler. PostExekver-metoden kan komma åt både skrivskyddade och läs-/skrivvariabler.
Connections Använd de namngivna och typade accessor-egenskaperna i samlingsklassen Connections i projektobjektet ComponentWrapper , som exponeras via egenskapen Connections i klassen ScriptMain .
Events Höj händelser genom att använda egenskapen ComponentMetaDataScriptMain-klassen och Fire<X-metoderna> i gränssnittet IDTSComponentMetaData100 .
Logging Utför loggning med Log metoden ScriptMain-klassen .

Felsökning av skriptkomponenten

För att felsöka koden i din skriptkomponent, sätt minst en brytpunkt i koden och stäng sedan VSTA-IDE för att köra paketet i SQL Server Data Tools (SSDT). När paketexekveringen går in i skriptkomponenten öppnas VSTA-IDE:n igen och visar din kod i skrivskyddat läge. När körningen når din brytpunkt kan du undersöka variabelvärden och stegvisa igenom den återstående koden.

Anmärkning

Du kan inte felsöka en Script-komponent när du kör Script-komponenten som en del av ett barnpaket som körs från en Execute Package-uppgift. Brytpunkter som du sätter i Script-komponenten i barnpaketet ignoreras i dessa fall. Du kan felsöka underpaketet normalt genom att köra det separat.

Anmärkning

När du felsöker ett paket som innehåller flera skriptkomponenter, felsöker felsökaren en skriptkomponent. Systemet kan felsöka en annan skriptkomponent om felsökaren slutförs, som i fallet med en Foreach Loop- eller For Loop-container.

Du kan också övervaka exekveringen av skriptkomponenten genom att använda följande metoder:

  • Avbryt exekveringen och visa ett modalt meddelande genom att använda metoden MessageBox.Show i System.Windows. Formernas namnrymd. (Ta bort denna kod efter att du slutfört felsökningsprocessen.)

  • Skapa händelser för informationsmeddelanden, varningar och fel. Metoderna FireInformation, FireWarning och FireError visar händelsebeskrivningen i Visual Studio Output-fönstret. Dock visar FireProgress-metoden, Console.Write-metoden och Console.WriteLine-metoden ingen information i Output-fönstret. Meddelanden från FireProgress-händelsen visas på fliken Progress-fliken i SSIS Designer. För mer information, se Raising Events in the Script Component.

  • Logga händelser eller användardefinierade meddelanden till aktiverade loggningsleverantörer. För mer information, se Loggning i skriptkomponenten.

Om du bara vill undersöka utdata från en skriptkomponent konfigurerad som källa eller transformation, utan att spara data till en destination, kan du stoppa dataflödet med en Row Count Transformation och koppla en dataviewer till utdata från Script-komponenten. För information om datavisare, se Debugging Data Flow.

I det här avsnittet

För mer information om kodning av Script-komponenten, se följande ämnen i detta avsnitt.

Förstå Script Component Object Model
Förklarar hur man använder objekt, metoder och egenskaper som finns tillgängliga i Script-komponenten.

Referenser till andra assemblies i skriptlösningar
Förklarar hur man refererar objekt från .NET Frameworks klassbibliotek i Script-komponenten.

Simulering av ett felutdata för skriptkomponenten
Förklarar hur man simulerar ett felutdata för rader som ger fel under bearbetning av skriptkomponenten.