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