Codifica e debug del componente scriptCoding and Debugging the Script Component

In Progettazione SSISSSIS sono disponibili due modalità per il componente script: progettazione metadati e progettazione codice.In SSISSSIS Designer, the Script component has two modes: metadata design mode and code design mode. Quando si apre il Editor trasformazione Script, il componente passa alla modalità di progettazione metadati, in cui configurare i metadati e impostare le proprietà del componente.When you open the Script Transformation Editor, the component enters metadata design mode, in which you configure metadata and set component properties. Dopo l'impostazione delle proprietà del componente script e la configurazione di input e output nella modalità di progettazione metadati, è possibile passare alla modalità di progettazione codice per scrivere lo script personalizzato.After you have set the properties of the Script component and configured the input and outputs in metadata design mode, you can switch to code design mode to write your custom script. Per ulteriori informazioni sulle modalità di progettazione metadati e modalità di progettazione codice, vedere configurazione del componente Script nell'Editor del componente di Script.For more information about metadata design mode and code design mode, see Configuring the Script Component in the Script Component Editor.

Scrittura dello script in modalità di progettazione codiceWriting the Script in Code Design Mode

Ambiente di sviluppo del componente scriptScript Component Development Environment

Per scrivere lo script, fare clic su modifica Script sul Script pagina del Editor trasformazione Script per aprire la MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE.To write your script, click Edit Script on the Script page of the Script Transformation Editor to open the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE. L'IDE di VSTA include tutte le funzionalità standard dell'ambiente Visual StudioVisual Studio .NET, come l'editor di Visual StudioVisual Studio con codifica a colori, la tecnologia IntelliSense e il Visualizzatore oggetti.The VSTA IDE includes all the standard features of the Visual StudioVisual Studio .NET environment, such as the color-coded Visual StudioVisual Studio editor, IntelliSense, and Object Browser.

Il codice di script viene scritto in MicrosoftMicrosoft Visual Basic o MicrosoftMicrosoft Visual C#.Script code is written in MicrosoftMicrosoft Visual Basic or MicrosoftMicrosoft Visual C#. Per specificare il linguaggio di scripting, impostare il ScriptLanguage proprietà il Editor trasformazione Script.You specify the script language by setting the ScriptLanguage property in the Script Transformation Editor. Per utilizzare un altro linguaggio di programmazione, è possibile sviluppare un assembly personalizzato nel linguaggio desiderato e chiamarne la funzionalità dal codice nel componente script.If you prefer to use another programming language, you can develop a custom assembly in your language of choice and call its functionality from the code in the Script component.

Lo script creato nel componente script viene archiviato nella definizione del pacchetto.The script that you create in the Script component is stored in the package definition. Non viene creato un file script separato.There is no separate script file. Pertanto, l'utilizzo del componente script non ha effetto sulla distribuzione del pacchetto.Therefore, the use of the Script component does not affect package deployment.

Nota

Durante la progettazione del pacchetto, il codice di script viene scritto temporaneamente in un file di progetto.While you design the package, the script code is temporarily written to a project file. Poiché l'archiviazione di informazioni riservate in un file costituisce un potenziale rischio per la sicurezza, è consigliabile non inserire nel codice di script informazioni riservate, ad esempio le password.Because storing sensitive information in a file is a potential security risk, we recommended that you do not include sensitive information such as passwords in the script code.

Per impostazione predefinita, Option Strict è disabilitato nell'IDE.By default, Option Strict is disabled in the IDE.

Struttura di progetto del componente scriptScript Component Project Structure

L'efficacia del componente script consiste nella possibilità di generare codice di infrastruttura in grado di ridurre la quantità di codice da scrivere.The power of the Script component is that it can generate infrastructure code that reduces the amount of code that you must write. Questa funzionalità si basa sul fatto che input e output, con le relative colonne e proprietà, sono fissi e noti in anticipo.This feature relies on the fact that inputs and outputs and their columns and properties are fixed and known in advance. Pertanto, qualsiasi modifica successiva apportata ai metadati del componente può invalidare il codice scritto.Therefore, any subsequent changes that you make to the component's metadata may invalidate the code that you have written. Questa condizione è causa di errori di compilazione durante l'esecuzione del pacchetto.This causes compilation errors during execution of the package.

Elementi e classi del progetto del componente scriptProject Items and Classes in the Script Component Project

Quando si passa alla modalità progettazione codice, l'IDE di VSTA viene aperto e visualizza il la classe ScriptMain elemento del progetto.When you switch to code design mode, the VSTA IDE opens and displays the ScriptMain project item. Il la classe ScriptMain elemento di progetto contiene il modificabile la classe ScriptMain (classe), punto che viene utilizzata la voce per lo script e che viene scritto il codice.The ScriptMain project item contains the editable ScriptMain class, which serves as the entry point for the script and which is where you write your code. Gli elementi di codice nella classe variano a seconda del linguaggio di programmazione selezionato per l'attività Script.The code elements in the class vary depending on the programming language that you selected for the Script task.

Il progetto di script contiene due elementi del progetto aggiuntivi di sola lettura generati automaticamente:The script project contains two additional auto-generated read-only project items:

  • Il ComponentWrapper elemento di progetto contiene tre classi:The ComponentWrapper project item contains three classes:

    • Il UserComponent (classe), che eredita da ScriptComponent e contiene i metodi e proprietà che verrà utilizzato per elaborare i dati e di interagire con il pacchetto.The UserComponent class, which inherits from ScriptComponent and contains the methods and properties that you will use to process data and to interact with the package. Il la classe ScriptMain classe eredita il UserComponent classe.The ScriptMain class inherits from the UserComponent class.

    • Oggetto connessioni classe di raccolta che contiene i riferimenti alle connessioni selezionate nella pagina Gestione connessione dell'Editor trasformazione Script.A Connections collection class that contains references to the connections selected on the Connection Manager page of the Script Transformation Editor.

    • A variabili classe di raccolta che contiene riferimenti alle variabili immesse nel ReadOnlyVariable e ReadWriteVariables proprietà il Script pagina del Editor trasformazione Script.A Variables collection class that contains references to the variables entered in the ReadOnlyVariable and ReadWriteVariables properties on the Script page of the Script Transformation Editor.

  • Il BufferWrapper elemento di progetto contiene una classe che eredita da ScriptBuffer per ogni input e output configurato nella input e output pagina del Editor trasformazione Script.The BufferWrapper project item contains a class that inherits from ScriptBuffer for each input and output configured on the Inputs and Outputs page of the Script Transformation Editor. Ognuna di queste classi contiene proprietà della funzione di accesso tipizzate corrispondenti alle colonne di input e output configurate e i buffer del flusso di dati contenenti le colonne.Each of these classes contains typed accessor properties that correspond to the configured input and output columns, and the data flow buffers that contain the columns.

    Per informazioni sull'utilizzo di questi oggetti, metodi e proprietà, vedere comprendere Script Component Object Model.For information about how to use these objects, methods, and properties, see Understanding the Script Component Object Model. Per informazioni su come usare i metodi e proprietà di queste classi in un determinato tipo di componente Script, vedere la sezione ulteriori esempi di componente Script.For information about how to use the methods and properties of these classes in a particular type of Script component, see the section Additional Script Component Examples. Negli argomenti di esempio vengono inoltre presentati esempi di codice completi.The example topics also contain complete code samples.

    Quando si configura il componente Script come trasformazione, il la classe ScriptMain elemento di progetto contiene il seguente codice generato automaticamente.When you configure the Script component as a transformation, the ScriptMain project item contains the following autogenerated code. Nel modello del codice sono inoltre disponibili una panoramica del componente di script, nonché informazioni aggiuntive su come recuperare e modificare oggetti SSIS, quali variabili, eventi e connessioni.The code template also provides an overview of the Script component, and additional information on how to retrieve and manipulate SSIS objects, such as variables, events, and connections.

' 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  
        */  
    }  

}  

Altri elementi del progetto del componente scriptAdditional Project Items in the Script Component Project

Il progetto di componente Script può includere elementi diverso da quello predefinito la classe ScriptMain elemento.The Script component project can include items other than the default ScriptMain item. È possibile aggiungere al progetto classi, moduli, file di codice e cartelle ed è possibile utilizzare le cartelle per organizzare gruppi di elementi.You can add classes, modules, code files, and folders to the project, and you can use folders to organize groups of items.

Tutti gli elementi aggiunti vengono salvati in modo permanente nel pacchetto.All the items that you add are persisted inside the package.

Riferimenti nel progetto del componente scriptReferences in the Script Component Project

È possibile aggiungere riferimenti agli assembly gestiti facendo clic con il progetto dell'attività Script in Esplora progettie quindi fare clic su Aggiungi riferimento.You can add references to managed assemblies by right-clicking the Script task project in Project Explorer, and then clicking Add Reference. Per ulteriori informazioni, vedere riferimento altri assembly nelle soluzioni di Scripting.For more information, see Referencing Other Assemblies in Scripting Solutions.

Nota

È possibile visualizzare i riferimenti al progetto nell'IDE di VSTA in Visualizzazione classi o in Esplora progetti.You can view project references in the VSTA IDE in Class View or in Project Explorer. Si apre una di queste finestre di vista menu.You open either of these windows from the View menu. È possibile aggiungere un nuovo riferimento dal progetto menu da Esplora progetti, o da Visualizzazione classi.You can add a new reference from the Project menu, from Project Explorer, or from Class View.

Interazione con il pacchetto nel componente scriptInteracting with the Package in the Script Component

Tramite lo script personalizzato scritto nel componente script è possibile accedere e utilizzare variabili e gestioni connessioni del pacchetto contenitore attraverso funzioni di accesso fortemente tipizzate nelle classi di base generate automaticamente.The custom script that you write in the Script component can access and use variables and connection managers from the containing package through strongly-typed accessors in the auto-generated base classes. Tuttavia, è necessario configurare sia le variabili sia le gestioni connessioni prima di passare alla modalità di progettazione codice per renderle disponibili allo script.However, you must configure both variables and connection managers before entering code-design mode if you want to make them available to your script. È inoltre possibile generare eventi ed eseguire registrazioni dal codice del componente script.You can also raise events and perform logging from your Script component code.

Gli elementi del progetto generati automaticamente nel progetto del componente script forniscono i seguenti oggetti, metodi e proprietà per l'interazione con il pacchetto.The autogenerated project items in the Script component project provide the following objects, methods, and properties for interacting with the package.

Funzionalità del pacchettoPackage Feature Metodo di accessoAccess Method
VariabiliVariables Utilizzare le proprietà della funzione di accesso denominate e tipizzate il variabili classe di raccolte nel ComponentWrapper elemento del progetto, esposto tramite la variabili proprietà del la classe ScriptMain classe.Use the named and typed accessor properties in the Variables collection class in the ComponentWrapper project item, exposed through the Variables property of the ScriptMain class.

Il PreExecute metodo può accedere solo alle variabili di sola lettura.The PreExecute method can access only read-only variables. Il PostExecute metodo può accedere sia di sola lettura e le variabili di lettura/scrittura.The PostExecute method can access both read-only and read/write variables.
ConnessioniConnections Utilizzare le proprietà della funzione di accesso denominate e tipizzate il connessioni classe di raccolte nel ComponentWrapper elemento del progetto, esposto tramite la connessioni proprietà del la classe ScriptMain classe.Use the named and typed accessor properties in the Connections collection class in the ComponentWrapper project item, exposed through the Connections property of the ScriptMain class.
EventiEvents Generare eventi utilizzando il ComponentMetaData proprietà del la classe ScriptMain classe e incendio<X > metodi del IDTSComponentMetaData100 interfaccia.Raise events by using the ComponentMetaData property of the ScriptMain class and the Fire<X> methods of the IDTSComponentMetaData100 interface.
RegistrazioneLogging Eseguire la registrazione tramite il Log metodo il la classe ScriptMain classe.Perform logging by using the Log method of the ScriptMain class.

Debug del componente scriptDebugging the Script Component

Per eseguire il debug del codice nel componente di script, impostare almeno un punto di interruzione nel codice, quindi chiudere l'IDE di VSTA per eseguire il pacchetto in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT).To debug the code in your Script component, set at least one breakpoint in the code, and then close the VSTA IDE to run the package in SQL Server Data Tools (SSDT)SQL Server Data Tools (SSDT). Quando l'esecuzione del pacchetto entra nel componente di script, l'IDE di VSTA viene riaperto e visualizza il codice in modalità di sola lettura.When package execution enters the Script component, the VSTA IDE reopens and displays your code in read-only mode. Quando l'esecuzione raggiunge il punto di interruzione, è possibile esaminare i valori delle variabili e scorrere il codice rimanente.After execution reaches your breakpoint, you can examine variable values and step through the remaining code.

Nota

Non è possibile eseguire il debug di un componente di script se l'attività viene eseguita nell'ambito di un pacchetto figlio eseguito da un'attività Esegui pacchetto.You cannot debug a Script component when you run the Script component as part of a child package that is run from an Execute Package task. In tali circostanze, i punti di interruzione impostati all'interno del componente di script del pacchetto figlio verranno ignorati.Breakpoints that you set in the Script component in the child package are disregarded in these circumstances. È possibile eseguire il debug del pacchetto figlio normalmente eseguendolo separatamente.You can debug the child package normally by running it separately.

Nota

Quando si esegue il debug di un pacchetto che contiene più componenti di script, il debugger è in grado di elaborarne solo uno.When you debug a package that contains multiple Script components, the debugger debugs one Script component. Il sistema può eseguire il debug di un altro componente di script se il debugger termina l'elaborazione, come nel caso di un contenitore Ciclo ForEach o Ciclo For.The system can debug another Script component if the debugger completes, as in the case of a Foreach Loop or For Loop container.

È anche possibile monitorare l'esecuzione del componente di script utilizzando i metodi seguenti:You can also monitor the execution of the Script component by using the following methods:

  • Interrompere l'esecuzione e visualizzare un messaggio modale tramite il MessageBox.Show metodo il System.Windows.Forms dello spazio dei nomi.Interrupt execution and display a modal message by using the MessageBox.Show method in the System.Windows.Forms namespace. Rimuovere il codice al termine del processo di debug.(Remove this code after you complete the debugging process.)

  • Generare eventi per messaggi informativi, avvisi ed errori.Raise events for informational messages, warnings, and errors. I metodi FireInformation FireWarning e FireError visualizzano la descrizione dell'evento in Visual Studio Output finestra.The FireInformation, FireWarning, and FireError methods display the event description in the Visual Studio Output window. Tuttavia, il FireProgress (metodo), il metodo Write e metodo Console. WriteLine non visualizzare alcuna informazione nella Output finestra.However, the FireProgress method, the Console.Write method, and Console.WriteLine method do not display any information in the Output window. Vengono visualizzati messaggi di evento FireProgress nel lo stato di avanzamento scheda SSISSSIS finestra di progettazione.Messages from the FireProgress event appear on the Progress tab of SSISSSIS Designer. Per ulteriori informazioni, vedere generazione di eventi nel componente Script.For more information, see Raising Events in the Script Component.

  • Registrare eventi o messaggi definiti dall'utente nei provider di log abilitati.Log events or user-defined messages to enabled logging providers. Per ulteriori informazioni, vedere registrazione nel componente Script.For more information, see Logging in the Script Component.

    Se si desidera soltanto esaminare l'output di un componente Script configurato come origine o trasformazione, senza salvare i dati a una destinazione, è possibile arrestare il flusso di dati con un trasformazione Conteggio righe e collegare un visualizzatore dati all'output del componente Script.If you just want to examine the output of a Script component configured as a source or as a transformation, without saving the data to a destination, you can stop the data flow with a Row Count Transformation and attach a data viewer to the output of the Script component. Per informazioni sui visualizzatori dati, vedere il debug del flusso di dati.For information about data viewers, see Debugging Data Flow.

Contenuto della sezioneIn This Section

Per ulteriori informazioni sulla codifica del componente script, vedere gli argomenti seguenti in questa sezione.For more information about coding the Script component, see the following topics in this section.

Informazioni sul modello di oggetto del componente ScriptUnderstanding the Script Component Object Model
Viene illustrato come utilizzare gli oggetti, i metodi e le proprietà disponibili nel componente script.Explains how to use the objects, methods, and properties available in the Script component.

Riferimento ad altri assembly nelle soluzioni di ScriptingReferencing Other Assemblies in Scripting Solutions
Viene illustrato come fare riferimento agli oggetti della libreria di classi .NET Framework.NET Framework nel componente script.Explains how to reference objects from the .NET Framework.NET Framework class library in the Script component.

Simulazione di un Output degli errori per il componente ScriptSimulating an Error Output for the Script Component
Viene illustrato come simulare un output degli errori per le righe che generano errori durante l'elaborazione tramite il componente script.Explains how to simulate an error output for rows that raise errors during processing by the Script component.

Risorse esterneExternal Resources

Vedere ancheSee Also

Configurazione del componente Script nell'Editor del componente di ScriptConfiguring the Script Component in the Script Component Editor