Share via


Déclenchement d'événements dans la tâche de script

S’applique à :SQL Server SSIS Integration Runtime dans Azure Data Factory

Les événements offrent un moyen de signaler des erreurs, des avertissements et d'autres informations, telles que la progression ou l'état d'une tâche, au package conteneur. Le package fournit des gestionnaires d'événements pour gérer les notifications d'événements. La tâche de script peut déclencher des événements en appelant des méthodes sur la propriété Events de l’objet Dts. Pour plus d’informations sur la manière dont les packages Integration Services gèrent les événements, consultez Gestionnaires d’événements Integration Services (SSIS).

Les événements peuvent être journalisés dans tout module fournisseur d'informations activé dans le package. Les modules fournisseurs d'informations stockent des informations à propos des événements dans une banque de données. La tâche de script peut également utiliser la méthode Log pour journaliser des informations dans un module fournisseur d'informations sans déclencher d'événement. Pour plus d’informations sur la manière d’utiliser la méthode Log, consultez Journalisation dans la tâche de script.

Pour déclencher un événement, la tâche de script appelle l'une des méthodes exposées par la propriété Events. Le tableau suivant répertorie les méthodes exposées par la propriété Events.

Événement Description
FireCustomEvent Déclenche un événement personnalisé défini par l'utilisateur dans le package.
FireError Informe le package d'une condition d'erreur.
FireInformation Fournit des informations à l'utilisateur.
FireProgress Informe le package de la progression de la tâche.
FireQueryCancel Retourne une valeur qui indique si le package nécessite l'arrêt prématuré de la tâche.
FireWarning Informe le package que la tâche est dans un état qui garantit la notification de l'utilisateur, mais qui n'est pas une condition d'erreur.

Exemples d'événements

L'exemple suivant montre comment déclencher des événements à partir de la tâche de script. L'exemple utilise une fonction API Windows native pour déterminer si une connexion Internet est disponible. Si aucune connexion n'est disponible, il génère une erreur. Si une connexion par modem potentiellement volatile est en cours d'utilisation, l'exemple déclenche un avertissement. Sinon, il retourne un message d'information indiquant qu'une connexion Internet a été détectée.

Private Declare Function InternetGetConnectedState Lib "wininet" _  
    (ByRef dwFlags As Long, ByVal dwReserved As Long) As Long  
  
Private Enum ConnectedStates  
    LAN = &H2  
    Modem = &H1  
    Proxy = &H4  
    Offline = &H20  
    Configured = &H40  
    RasInstalled = &H10  
End Enum  
  
Public Sub Main()  
  
    Dim dwFlags As Long  
    Dim connectedState As Long  
    Dim fireAgain as Boolean  
  
    connectedState = InternetGetConnectedState(dwFlags, 0)  
  
    If connectedState <> 0 Then  
        If (dwFlags And ConnectedStates.Modem) = ConnectedStates.Modem Then  
            Dts.Events.FireWarning(0, "Script Task Example", _  
                "Volatile Internet connection detected.", String.Empty, 0)  
        Else  
            Dts.Events.FireInformation(0, "Script Task Example", _  
                "Internet connection detected.", String.Empty, 0, fireAgain)  
        End If  
    Else  
        ' If not connected to the Internet, raise an error.  
        Dts.Events.FireError(0, "Script Task Example", _  
            "Internet connection not available.", String.Empty, 0)  
    End If  
  
    Dts.TaskResult = ScriptResults.Success  
  
End Sub  
using System;  
using System.Data;  
using Microsoft.SqlServer.Dts.Runtime;  
using System.Windows.Forms;  
using System.Runtime.InteropServices;  
  
public class ScriptMain  
{  
  
[DllImport("wininet")]  
        private extern static long InternetGetConnectedState(ref long dwFlags, long dwReserved);  
  
        private enum ConnectedStates  
        {  
            LAN = 0x2,  
            Modem = 0x1,  
            Proxy = 0x4,  
            Offline = 0x20,  
            Configured = 0x40,  
            RasInstalled = 0x10  
        };  
  
        public void Main()  
        {  
            //  
            long dwFlags = 0;  
            long connectedState;  
            bool fireAgain = true;  
            int state;  
  
            connectedState = InternetGetConnectedState(ref dwFlags, 0);  
            state = (int)ConnectedStates.Modem;  
            if (connectedState != 0)  
            {  
                if ((dwFlags & state) == state)  
                {  
                    Dts.Events.FireWarning(0, "Script Task Example", "Volatile Internet connection detected.", String.Empty, 0);  
                }  
                else  
                {  
                    Dts.Events.FireInformation(0, "Script Task Example", "Internet connection detected.", String.Empty, 0, ref fireAgain);  
                }  
            }  
            else  
            {  
                // If not connected to the Internet, raise an error.  
                Dts.Events.FireError(0, "Script Task Example", "Internet connection not available.", String.Empty, 0);  
            }  
  
            Dts.TaskResult = (int)ScriptResults.Success;  
  
        }  
  

Voir aussi

Gestionnaires d'événements Integration Services (SSIS)
Ajouter un gestionnaire d’événements à un package