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 Microsoft Visual 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 Microsoft Visual Basic o Microsoft Visual C#. 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 sicurezza, è 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 noti 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 a 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 di script come trasformazione, nell'elemento del progetto ScriptMain è incluso il seguente codice generato automaticamente. 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.

' 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

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). 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. Quando l'esecuzione raggiunge il punto di interruzione, è possibile esaminare i valori delle variabili e scorrere il codice rimanente.

[!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. In tali circostanze, i punti di interruzione impostati all'interno del componente di script del pacchetto figlio verranno ignorati. È possibile eseguire il debug del pacchetto figlio normalmente eseguendolo separatamente.

[!NOTA]

Quando si esegue il debug di un pacchetto che contiene più componenti di script, il debugger è in grado di elaborarne solo uno. 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.

È anche possibile monitorare l'esecuzione del componente di 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 arrestare 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.

Argomenti della sezione

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

Risorse esterne

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

Per i download, gli articoli, gli esempi e i video Microsoft più recenti, oltre alle soluzioni selezionate dalla community, visitare la pagina Integration Services sul sito MSDN:


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

Vedere anche

Concetti

Configurazione del componente script nell'editor corrispondente