Compartir a través de


Provocar eventos en la tarea Script

Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory

Los eventos proporcionan una manera de notificar errores, advertencias y otra información, como el progreso o el estado de una tarea, al paquete contenedor. El paquete proporciona controladores de eventos para administrar las notificaciones de eventos. La tarea Script puede provocar los eventos mediante llamadas a los métodos en la propiedad Events del objeto Dts. Para obtener más información sobre la manera en que los paquetes Integration Services controlan los eventos, vea Controladores de eventos de Integration Services (SSIS).

Los eventos se pueden registrar en cualquier proveedor de registro habilitado en el paquete. Los proveedores de registro almacenan información sobre los eventos en un almacén de datos. La tarea Script también puede utilizar el método Log para registrar información en un proveedor de registro sin provocar un evento. Para obtener más información acerca de cómo usar el método Log, vea Registrar en la tarea Script.

Para provocar un evento, la tarea Script llama a uno de los métodos expuesto por la propiedad Events. En la tabla siguiente se enumeran los métodos que expone la propiedad Events.

Evento Descripción
FireCustomEvent Provoca un evento personalizado definido por el usuario en el paquete.
FireError Informa al paquete de una condición de error.
FireInformation Proporciona información al usuario.
FireProgress Informa al paquete del progreso de la tarea.
FireQueryCancel Devuelve un valor que indica si el paquete necesita que la tarea se cierre prematuramente.
FireWarning Informa al paquete de que la tarea está en un estado que garantiza la notificación del usuario, pero no es una condición de error.

Ejemplo de eventos

En el ejemplo siguiente se muestra cómo provocar eventos desde la tarea Script. El ejemplo utiliza una función nativa de la API de Windows para determinar si está disponible una conexión a Internet. Si no hay ninguna conexión disponible, provoca un error. Si se utiliza una conexión de módem potencialmente volátil, el ejemplo provoca una advertencia. De lo contrario, devuelve un mensaje informativo que indica que se ha detectado una conexión a Internet.

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

Consulte también

Controladores de eventos de Integration Services (SSIS)
Agregar un controlador de eventos a un paquete