Codifica e debug del componente script

In Progettazione SSIS sono disponibili due modalità per il componente script: progettazione metadati e progettazione codice. Quando si apre l'Editor trasformazione Script, viene attivata la modalità di progettazione metadati che consente di configurare i metadati e impostare le proprietà del componente. 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. Per ulteriori informazioni sulle modalità di progettazione metadati e codice, vedere Configurazione del componente script nell'editor corrispondente.

Scrittura dello script in modalità di progettazione codice

Ambiente di sviluppo del componente script

Per scrivere lo script, fare clic su Modifica script nella pagina Script dell'Editor trasformazione Script per aprire l'IDE di MicrosoftVisual Studio Tools for Applications (VSTA). L'IDE di VSTA include tutte le funzionalità standard dell'ambiente Visual Studio .NET, come l'editor di Visual Studio con codifica a colori, la tecnologia IntelliSense e il Visualizzatore oggetti.

Il codice di script viene scritto in MicrosoftVisual Basic 2008 o MicrosoftVisual C# 2008. Il linguaggio di scripting viene specificato mediante l'impostazione della proprietà ScriptLanguage nell'Editor trasformazione Script. Per utilizzare un altro linguaggio di programmazione, è possibile sviluppare un assembly personalizzato nel linguaggio desiderato e chiamarne la funzionalità dal codice nel componente script.

Lo script creato nel componente script viene archiviato nella definizione del pacchetto. Non viene creato un file script separato. Pertanto, l'utilizzo del componente script non ha effetto sulla distribuzione del pacchetto.

[!NOTA]

Durante la progettazione del pacchetto, il codice di script viene scritto temporaneamente in un file di progetto. Poiché l'archiviazione di informazioni riservate in un file costituisce un potenziale rischio per la protezione, è consigliabile non inserire nel codice di script informazioni riservate, ad esempio le password.

Per impostazione predefinita, Option Strict è disabilitato nell'IDE.

Struttura di progetto del componente script

L'efficacia del componente script consiste nella possibilità di generare codice di infrastruttura in grado di ridurre la quantità di codice da scrivere. Questa funzionalità si basa sul fatto che input e output, con le relative colonne e proprietà, sono fissi e conosciuti in anticipo. Pertanto, qualsiasi modifica successiva apportata ai metadati del componente può invalidare il codice scritto. Questa condizione è causa di errori di compilazione durante l'esecuzione del pacchetto.

Elementi e classi del progetto del componente script

Quando si passa alla modalità di progettazione codice, nell'IDE di VSTA viene aperto e visualizzato l'elemento del progetto ScriptMain. L'elemento del progetto ScriptMain contiene la classe ScriptMain modificabile che funge da punto di ingresso per lo script e nella quale viene scritto il codice. Gli elementi di codice nella classe variano a seconda del linguaggio di programmazione selezionato per l'attività Script.

Il progetto di script contiene due elementi del progetto aggiuntivi di sola lettura generati automaticamente:

  • L'elemento del progetto ComponentWrapper contiene tre classi:

    • Classe UserComponent che eredita da ScriptComponent e contiene i metodi e le proprietà da utilizzare per elaborare i dati e interagire con il pacchetto. La classe ScriptMain eredita dalla classe UserComponent.

    • Classe della raccolta Connections che contiene riferimenti alle connessioni selezionate nella pagina Gestione connessione dell'Editor trasformazione Script.

    • Classe della raccolta Variables che contiene riferimenti alle variabili immesse nelle proprietà ReadOnlyVariable e ReadWriteVariables nella pagina Script dell'Editor trasformazione Script.

  • L'elemento del progetto BufferWrapper contiene una classe che eredita da ScriptBuffer per ogni input e output configurato nella pagina Input e output dell'Editor trasformazione Script. 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.

Per informazioni sulla modalità di utilizzo di questi oggetti, metodi e proprietà, vedere Informazioni sul modello di oggetti del componente script. Per informazioni sulla modalità di utilizzo dei metodi e delle proprietà di queste classi in un determinato tipo di componente script, vedere la sezione Ulteriori esempi di componente script. Negli argomenti di esempio vengono inoltre presentati esempi di codice completi.

Quando si configura il componente script come trasformazione, l'elemento del progetto ScriptMain contiene il seguente codice generato automaticamente:

' 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 script

Il progetto del componente script può includere elementi diversi dall'elemento ScriptMain predefinito. È possibile aggiungere al progetto classi, moduli, file di codice e cartelle ed è possibile utilizzare le cartelle per organizzare gruppi di elementi.

Tutti gli elementi aggiunti vengono salvati in modo permanente nel pacchetto.

Riferimenti nel progetto del componente script

È possibile aggiungere riferimenti agli assembly gestiti facendo clic con il pulsante destro del mouse sul progetto di attività Script in Esplora progetti, quindi scegliendo Aggiungi riferimento. Per ulteriori informazioni, vedere Riferimenti ad altri assembly nelle soluzioni di scripting.

[!NOTA]

È possibile visualizzare i riferimenti al progetto nell'IDE di VSTA in Visualizzazione classi o in Esplora progetti. Queste finestre possono essere aperte dal menu Visualizza. È possibile aggiungere un nuovo riferimento dal menu Progetto, da Esplora progetti o da Visualizzazione classi.

Interazione con il pacchetto nel componente script

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. Tuttavia, è necessario configurare sia le variabili sia le gestioni connessioni prima di passare alla modalità di progettazione codice per renderle disponibili allo script. È inoltre possibile generare eventi ed eseguire registrazioni dal codice del componente script.

Gli elementi del progetto generati automaticamente nel progetto del componente script forniscono i seguenti oggetti, metodi e proprietà per l'interazione con il pacchetto.

Funzionalità del pacchetto

Metodo di accesso

Variabili

Utilizzare le proprietà delle funzioni di accesso denominate e tipizzate nella classe della raccolta Variables nell'elemento del progetto ComponentWrapper, esposto tramite la proprietà Variables della classe ScriptMain.

Il metodo PreExecute può accedere unicamente a variabili di sola lettura. Il metodo PostExecute può accedere sia a variabili di sola lettura sia a variabili di lettura/scrittura.

Connessioni

Utilizzare le proprietà delle funzioni di accesso denominate e tipizzate nella classe della raccolta Connections nell'elemento del progetto ComponentWrapper, esposto tramite la proprietà Connections della classe ScriptMain.

Eventi

Generare eventi tramite la proprietà ComponentMetaData della classe ScriptMain e i metodi Fire<X> dell'interfaccia IDTSComponentMetaData100.

Registrazione

Eseguire la registrazione utilizzando il metodo Log della classe ScriptMain.

Debug del componente script

Il componente script non supporta l'utilizzo dei punti di interruzione. Pertanto, non è possibile controllare il codice ed esaminare valori mentre il pacchetto è in esecuzione. È possibile monitorare l'esecuzione del componente script utilizzando i metodi seguenti:

  • Interrompere l'esecuzione e visualizzare un messaggio modale tramite il metodo MessageBox.Show nello spazio dei nomi System.Windows.Forms. Rimuovere il codice al termine del processo di debug.

  • Generare eventi per messaggi informativi, avvisi ed errori. I metodi FireInformation, FireWarning e FireError visualizzano la descrizione dell'evento nella finestra Output di Visual Studio. Tuttavia, i metodi FireProgress, Console.Write e Console.WriteLine non consentono di visualizzare alcuna informazione nella finestra Output. I messaggi dell'evento FireProgress vengono visualizzati nella scheda Stato di Progettazione SSIS. Per ulteriori informazioni, vedere Generazione di eventi nel componente script.

  • Registrare eventi o messaggi definiti dall'utente nei provider di log abilitati. Per ulteriori informazioni, vedere Registrazione del componente script.

Se si desidera soltanto esaminare l'output di un componente script configurato come origine o trasformazione, senza salvare i dati in una destinazione, è possibile interrompere il flusso di dati con una Trasformazione Conteggio righe e collegare un visualizzatore dati all'output del componente script. Per informazioni sui visualizzatori dati, vedere Debug di un flusso di dati.

Contenuto della sezione

Per ulteriori informazioni sulla codifica del componente script, vedere gli argomenti seguenti in questa sezione.

Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.