Utilizzo di variabili nell'attività Script

Le variabili rendono possibile lo scambio di dati tra l'attività Script e altri oggetti del pacchetto. Per ulteriori informazioni, vedere Variabili in Integration Services.

L'attività Script utilizza la proprietà Variables dell'oggetto Dts per leggere e scrivere negli oggetti Variable del pacchetto.

[!NOTA]

La proprietà Value della classe Variable è di tipo Object. Poiché l'oggetto Option Strict dell'attività Script è abilitato, è necessario eseguire il cast della proprietà Value nel tipo appropriato prima che sia possibile utilizzarla.

Aggiungere variabili esistenti agli elenchi ReadOnlyVariables e ReadWriteVariables in Editor attività Script per renderle disponibili per lo script personalizzato. Tenere presente che per i nomi delle variabili viene applicata la distinzione tra maiuscole e minuscole. All'interno dello script le variabili di entrambi i tipi sono accessibili tramite la proprietà Variables dell'oggetto Dts. Utilizzare la proprietà Value per leggere e scrivere in singole variabili. L'attività Script gestisce in modo trasparente il blocco mentre lo script legge e modifica i valori delle variabili.

È possibile utilizzare il metodo Contains della raccolta Variables restituita dalla proprietà Variables per verificare l'esistenza di una variabile prima di utilizzarla nel codice.

È anche possibile utilizzare la proprietà VariableDispenser (Dts.VariableDispenser) per utilizzare variabili nell'attività Script. Quando si utilizza VariableDispenser, è necessario gestire sia la semantica di blocco che il cast dei tipi di dati per i valori delle variabili nel codice personalizzato. Può essere necessario utilizzare la proprietà VariableDispenser anziché la proprietà Variables se si desidera utilizzare una variabile non disponibile in fase di progettazione ma che viene creata a livello di programmazione in fase di esecuzione.

Utilizzo dell'attività Script in un contenitore Ciclo Foreach

Quando un'attività Script viene eseguita ripetutamente in un contenitore Ciclo Foreach, lo script deve in genere gestire il contenuto dell'elemento corrente nell'enumeratore. Ad esempio, se si utilizza l'enumeratore Foreach File, lo script deve riconoscere il nome di file corrente. Se si utilizza l'enumeratore Foreach ADO, lo script deve conoscere il contenuto delle colonne nella riga di dati corrente.

Le variabili rendono possibile questa comunicazione tra il contenitore Ciclo Foreach e l'attività Script. Nella pagina Mapping variabili di Editor ciclo Foreach assegnare variabili a ogni elemento di dati restituito da un singolo elemento enumerato. Ad esempio, un enumeratore Foreach File restituisce solo un nome di file in corrispondenza dell'indice 0 e pertanto richiede solo un mapping di variabili, mentre un enumeratore che restituisce diverse colonne di dati in ogni riga richiede che venga eseguito il mapping di una variabile diversa a ogni colonna che si desidera utilizzare nell'attività Script.

Dopo aver eseguito il mapping degli elementi enumerati alle variabili, è necessario aggiungere le variabili mappate alla proprietà ReadOnlyVariables nella pagina Script di Editor attività Script per renderli disponibili per lo script. Per un esempio di un'attività Script all'interno di un contenitore Ciclo Foreach che elabora i file di immagine in una cartella, vedere Utilizzo di immagini con l'attività Script.

Esempio di variabili

Nell'esempio seguente viene illustrato come accedere e utilizzare le variabili in un'attività Script per determinare il percorso del flusso di lavoro del pacchetto. Nell'esempio si presuppone che siano state create le variabili integer denominate CustomerCount e MaxRecordCount e che siano state aggiunte alla raccolta ReadOnlyVariables in Editor attività Script. La variabile CustomerCount contiene il numero di record di clienti da importare. Se il valore è maggiore del valore MaxRecordCount, l'attività Script riporta un errore. Quando si verifica un errore perché la soglia MaxRecordCount è stata superata, il percorso di errore del flusso di lavoro può implementare l'eventuale pulizia richiesta.

Per compilare correttamente l'esempio, è necessario aggiungere un riferimento all'assembly Microsoft.SqlServer.ScriptTask.

Public Sub Main()

    Dim customerCount As Integer
    Dim maxRecordCount As Integer

    If Dts.Variables.Contains("CustomerCount") = True AndAlso _
        Dts.Variables.Contains("MaxRecordCount") = True Then

        customerCount = _
            CType(Dts.Variables("CustomerCount").Value, Integer)
        maxRecordCount = _
            CType(Dts.Variables("MaxRecordCount").Value, Integer)

    End If

    If customerCount > maxRecordCount Then
            Dts.TaskResult = ScriptResults.Failure
    Else
            Dts.TaskResult = ScriptResults.Success
    End If

End Sub
using System;
using System.Data;
using Microsoft.SqlServer.Dts.Runtime;

public class ScriptMain
{



    public void Main()
    {
        int customerCount;
        int maxRecordCount;

        if (Dts.Variables.Contains("CustomerCount")==true&&Dts.Variables.Contains("MaxRecordCount")==true)

        {
            customerCount = (int) Dts.Variables["CustomerCount"].Value;
            maxRecordCount = (int) Dts.Variables["MaxRecordCount"].Value;

        }

        if (customerCount>maxRecordCount)
        {
            Dts.TaskResult = (int)ScriptResults.Failure;
        }
        else
        {
            Dts.TaskResult = (int)ScriptResults.Success;
        }

    }

} 
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.