Partager via


Utilisation de variables dans la tâche de script

Les variables permettent à la tâche de script d'échanger des données avec d'autres objets dans le package. Pour plus d’informations, consultez Variables Integration Services (SSIS).

La tâche de script utilise la propriété Variables de l'objet Dts pour lire et écrire dans les objets Variable du package.

Remarque

La propriété Value de la classe Variable est de type Object. Comme Option Strict est activé dans la tâche de script, vous devez effectuer un cast de la propriété Value en type approprié avant de pouvoir l'utiliser.

Vous ajoutez des variables existantes aux listes ReadOnlyVariables et ReadWriteVariables dans l’éditeur de tâche de script afin qu’elles puissent être utilisées dans le script personnalisé. N'oubliez pas que les noms de variables respectent la casse. Dans le script, vous accédez aux deux types de variables par le biais de la propriété Variables de l'objet Dts. Utilisez la propriété Value pour lire et écrire des variables individuelles. La tâche de script gère de façon transparente le verrouillage pendant que le script lit et modifie les valeurs des variables.

La méthode Contains de la collection Variables retournée par la propriété Variables vous permet de vérifier l'existence d'une variable avant de l'utiliser dans votre code.

La propriété VariableDispenser (Dts.VariableDispenser) vous permet également d’utiliser des variables dans la tâche de script. Lorsque vous utilisez la propriété VariableDispenser, vous devez gérer à la fois la sémantique de verrouillage et la conversion des types de données pour les valeurs de variables dans votre propre code. Vous pourriez devoir utiliser la propriété VariableDispenser à la place de la propriété Variables si vous souhaitez utiliser une variable qui n'est pas disponible au moment de la conception mais qui est créée par programme au moment de l'exécution.

Utilisation de la tâche de script dans un conteneur de boucles Foreach

Lorsqu'une tâche de script s'exécute à plusieurs reprises dans un conteneur de boucles Foreach, le script doit généralement utiliser le contenu de l'élément actif dans l'énumérateur. Par exemple, lors de l'utilisation d'un énumérateur Foreach File, le script doit connaître le nom du fichier actif ; lors de l'utilisation d'un énumérateur ADO Foreach, le script doit connaître le contenu des colonnes dans la ligne de données en cours.

Les variables permettent d'établir cette communication entre le conteneur de boucles Foreach et la tâche de script. Dans la page Mappage de variables de l’Éditeur de boucle Foreach, assignez des variables à chaque élément de données qui est retourné par un même élément énuméré. Par exemple, un énumérateur Foreach File retourne uniquement un nom de fichier à l'index 0 et ne requiert donc qu'un seul mappage de variables, alors qu'un énumérateur qui retourne plusieurs colonnes de données dans chaque ligne requiert que vous mappiez une variable différente à chaque colonne que vous souhaitez utiliser dans la tâche de script.

Une fois que vous avez mappé des éléments énumérés à des variables, vous devez ajouter les variables mappées à la ReadOnlyVariables propriété dans la page Script de l’éditeur de tâche de script pour les rendre disponibles pour votre script. Pour obtenir un exemple de tâche de script dans un conteneur de boucles Foreach qui traite les fichiers image dans un dossier, consultez Utilisation d’images à l’aide de la tâche de script.

Exemple de variables

L'exemple suivant montre comment accéder à des variables et les utiliser dans une tâche de script pour déterminer le chemin d'accès du flux de travail du package. L’exemple part du principe que vous avez créé des variables entières nommées CustomerCount et MaxRecordCount les a ajoutées à la ReadOnlyVariables collection dans l’Éditeur de tâche de script. La variable CustomerCount contient le nombre d'enregistrements de client à importer. Si sa valeur est supérieure à la valeur de MaxRecordCount, la tâche de script signale une défaillance. Lorsqu'une défaillance se produit en raison du dépassement du seuil MaxRecordCount, le chemin d'accès aux erreurs du flux de travail peut implémenter les opérations de nettoyage requises.

Pour compiler correctement l'exemple, vous devez ajouter une référence à l'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;  
        }  
  
    }  
  
}  
  

Icône Integration Services (petite) Rester à jour avec Integration Services
Pour obtenir les derniers téléchargements, articles, exemples et vidéos de Microsoft, ainsi que les solutions sélectionnées de la communauté, visitez la page Integration Services sur MSDN :

Visiter la page Integration Services sur MSDN

Pour recevoir une notification automatique de ces mises à jour, abonnez-vous aux flux RSS disponibles sur la page.

Voir aussi

Variables Integration Services (SSIS)
Utiliser des variables dans des packages