Koda och felsöka skriptaktiviteten

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

Efter att ha konfigurerat Script-uppgiften i Script Task Editor skriver du din egen kod i Script Task Development Environment.

Skriptuppgiftsutvecklingsmiljö

Skriptuppgiften använder Microsoft Visual Studio Tools for Applications (VSTA) som utvecklingsmiljö för själva skriptet.

Skriptkoden är skriven i Microsoft Visual Basic eller Microsoft Visual C#. Du specificerar skriptspråket genom att sätta egenskapen ScriptLanguage i Script Task 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-uppgiften.

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

Note

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

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

Script Task Project-struktur

När du skapar eller ändrar skriptet som finns i en skriptuppgift öppnar VSTA ett tomt nytt projekt eller öppnar det befintliga projektet igen. Skapandet av detta VSTA-projekt påverkar inte paketets distribution, eftersom projektet sparas i paketfilen; Skript-uppgiften skapar inga ytterligare filer.

Project Items och klasser i Script Task Project

Som standard innehåller Script-uppgiftens projekt som visas i VSTA Project Explorer-fönstret ett enda element, ScriptMain. ScriptMain-objektet innehåller i sin tur en enda klass, även kallad ScriptMain. Kodelementen i klassen varierar beroende på vilket programmeringsspråk du valde för Script-uppgiften:

  • När Script-uppgiften är konfigurerad för programmeringsspråket Visual Basic har klassen ScriptMain en publik delrutin, Main. ScriptMain.Main-subrutinen är metoden som runtime-programmet anropar när du kör din Script-uppgift.

    Som standard är den enda koden i huvudsubrutinen i ett nytt skript raden .Dts.TaskResult = ScriptResults.Success Denna rad informerar körtiden om att uppgiften var framgångsrik i sin drift. Egenskapen Dts.TaskResult diskuteras i Returning Results from the Script Task.

  • När Script-uppgiften är konfigurerad för programmeringsspråket Visual C# har klassen ScriptMain en publik metod, Main. Metoden anropas när Script-uppgiften körs.

    Som standard inkluderar huvudmetoden raden Dts.TaskResult = (int)ScriptResults.Success. Denna rad informerar körtiden om att uppgiften var framgångsrik i sin drift.

ScriptMain-objektet kan innehålla andra klasser än ScriptMain-klassen. Klasser är endast tillgängliga för den Script-uppgift där de finns.

Som standard innehåller ScriptMain-projektobjektet följande autogenererad kod. Kodmallen ger också en översikt över Script-uppgiften samt ytterligare information om hur man hämtar och manipulerar SSIS-objekt, såsom variabler, händelser och kopplingar.

' Microsoft SQL Server Integration Services Script Task  
' Write scripts using Microsoft Visual Basic 2008.  
' The ScriptMain is the entry point class of the script.  
  
Imports System  
Imports System.Data  
Imports System.Math  
Imports Microsoft.SqlServer.Dts.Runtime.VSTAProxy  
  
<System.AddIn.AddIn("ScriptMain", Version:="1.0", Publisher:="", Description:="")> _  
Partial Class ScriptMain  
  
Private Sub ScriptMain_Startup(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Startup  
  
End Sub  
  
Private Sub ScriptMain_Shutdown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shutdown  
Try  
' Unlock variables from the read-only and read-write variable collection properties  
If (Dts.Variables.Count <> 0) Then  
Dts.Variables.Unlock()  
End If  
Catch ex As Exception  
        End Try  
End Sub  
  
Enum ScriptResults  
Success = DTSExecResult.Success  
Failure = DTSExecResult.Failure  
End Enum  
  
' The execution engine calls this method when the task executes.  
' To access the object model, use the Dts property. Connections, variables, events,  
' and logging features are available as members of the Dts property as shown in the following examples.  
'  
' To reference a variable, call Dts.Variables("MyCaseSensitiveVariableName").Value  
' To post a log entry, call Dts.Log("This is my log text", 999, Nothing)  
' To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, True)  
'  
' To use the connections collection use something like the following:  
' ConnectionManager cm = Dts.Connections.Add("OLEDB")  
' cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;"  
'  
' Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.  
'   
' To open Help, press F1.  
  
Public Sub Main()  
'  
' Add your code here  
'  
Dts.TaskResult = ScriptResults.Success  
End Sub  
  
End Class  
/*  
   Microsoft SQL Server Integration Services Script Task  
   Write scripts using Microsoft Visual C# 2008.  
   The ScriptMain is the entry point class of the script.  
*/  
  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Runtime.VSTAProxy;  
using System.Windows.Forms;  
  
namespace ST_1bcfdbad36d94f8ba9f23a10375abe53.csproj  
{  
    [System.AddIn.AddIn("ScriptMain", Version = "1.0", Publisher = "", Description = "")]  
    public partial class ScriptMain  
    {  
        private void ScriptMain_Startup(object sender, EventArgs e)  
        {  
  
        }  
  
        private void ScriptMain_Shutdown(object sender, EventArgs e)  
        {  
            try  
            {  
                // Unlock variables from the read-only and read-write variable collection properties  
                if (Dts.Variables.Count != 0)  
                {  
                    Dts.Variables.Unlock();  
                }  
            }  
            catch  
            {  
            }  
        }  
  
        #region VSTA generated code  
        private void InternalStartup()  
        {  
            this.Startup += new System.EventHandler(ScriptMain_Startup);  
            this.Shutdown += new System.EventHandler(ScriptMain_Shutdown);  
        }  
        enum ScriptResults  
        {  
            Success = DTSExecResult.Success,  
            Failure = DTSExecResult.Failure  
        };  
  
        #endregion  
  
        /*  
The execution engine calls this method when the task executes.  
To access the object model, use the Dts property. Connections, variables, events,  
and logging features are available as members of the Dts property as shown in the following examples.  
  
To reference a variable, call Dts.Variables["MyCaseSensitiveVariableName"].Value;  
To post a log entry, call Dts.Log("This is my log text", 999, null);  
To fire an event, call Dts.Events.FireInformation(99, "test", "hit the help message", "", 0, true);  
  
To use the connections collection use something like the following:  
ConnectionManager cm = Dts.Connections.Add("OLEDB");  
cm.ConnectionString = "Data Source=localhost;Initial Catalog=AdventureWorks;Provider=SQLNCLI10;Integrated Security=SSPI;Auto Translate=False;";  
  
Before returning from this method, set the value of Dts.TaskResult to indicate success or failure.  
  
To open Help, press F1.  
*/  
  
        public void Main()  
        {  
            // TODO: Add your code here  
            Dts.TaskResult = (int)ScriptResults.Success;  
        }  
    }  

Ytterligare Project-element i Script Task Project

Script-uppgiftsprojektet kan inkludera andra objekt än standardobjektet ScriptMain . Du kan lägga till klasser, moduler och kodfiler i projektet. Du kan också använda mappar för att organisera grupper av föremål. Alla saker du lägger till finns kvar i paketet.

Referenser i Script Task 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.

Note

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.

Interagera med paketet i skriptuppgiften

Script-uppgiften använder det globala Dts-objektet , som är en instans av ScriptObjectModel klassen, och dess medlemmar för att interagera med det innehållande paketet och med Integration Services-runtimen.

Följande tabell listar de huvudsakliga publika medlemmarna i ScriptObjectModel klassen, som exponeras för Script-uppgiftskod via det globala Dts-objektet . Ämnena i detta avsnitt diskuterar användningen av dessa medlemmar mer i detalj.

Medlem Purpose
Connections Ger tillgång till anslutningshanterare som definierats i paketet.
Events Tillhandahåller ett händelsegränssnitt som låter skriptuppgiften generera fel, varningar och informationsmeddelanden.
ExecutionValue Ger ett enkelt sätt att returnera ett enskilt objekt till runtime (utöver TaskResult) som också kan användas för arbetsflödesförgrening.
Log Loggar information som uppgiftsframsteg och resultat till aktiverade loggleverantörer.
TaskResult Rapporterar om uppgiften lyckas eller misslyckas.
Transaction Tillhandahåller transaktionen, om någon, inom vilken uppgiftens container körs.
Variables Ger tillgång till variablerna som listas i ReadOnlyVariables- och ReadWriteVariables-uppgifterna för användning inom skriptet.

Kursen ScriptObjectModel innehåller också några offentliga medlemmar som du troligen inte kommer att använda.

Medlem Description
VariableDispenser Fastigheten Variables ger mer bekväm tillgång till variabler. Även om du kan använda VariableDispenser, måste du uttryckligen anropa metoder för att låsa och låsa upp variabler för läsning och skrivning. Skriptuppgiften hanterar låssemantiken åt dig när du använder egenskapen Variables .

Felsökning av skriptuppgiften

För att felsöka koden i din Script-uppgift, sätt minst en brytpunkt i koden och stäng sedan VSTA-IDE:n för att köra paketet i SQL Server Data Tools (SSDT). När paketexekveringen går in i Script-uppgiften ö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.

Varning

Du kan inte felsöka Script-uppgiften när du kör paketet i 64-bitarsläge.

Note

Du måste köra paketet för att felsöka i din Script-uppgift. Om du bara kör den enskilda uppgiften ignoreras brytpunkter i Script-uppgiftskoden.

Note

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

Note

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