Condividi tramite


Utilizzo di variabili nell'attività Script

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

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 usare la proprietà VariableDispenser (Dts.VariableDispenser) per usare 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 mappato gli elementi enumerati alle variabili, è necessario aggiungere le variabili mappate alla ReadOnlyVariables proprietà nella pagina Script dell'Editor attività Script per renderle 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 Uso 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. L'esempio presuppone che siano state create variabili integer denominate CustomerCount e aggiunte alla ReadOnlyVariables raccolta nell'Editor attività MaxRecordCount 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 i download, gli articoli, gli esempi e i video più recenti di Microsoft, nonché le soluzioni selezionate dalla community, visitare la pagina integration services in MSDN:

Visitare la pagina relativa a Integration Services su MSDN

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

Vedi anche

Variabili di Integration Services (SSIS)
Uso di variabili nei pacchetti