Generazione di eventi nell'attività ScriptRaising Events in the Script Task

Gli eventi consentono di segnalare errori, avvisi e altre informazioni, ad esempio l'avanzamento o lo stato delle attività, al pacchetto contenitore.Events provide a way to report errors, warnings, and other information, such as task progress or status, to the containing package. Il pacchetto fornisce gestori eventi per la gestione di notifiche degli eventi.The package provides event handlers for managing event notifications. L'attività Script può generare eventi chiamando metodi sul Events proprietà del Dts oggetto.The Script task can raise events by calling methods on the Events property of the Dts object. Per ulteriori informazioni su come Integration ServicesIntegration Services pacchetti gestione degli eventi, vedere Integration Services ( SSIS ) I gestori eventi.For more information about how Integration ServicesIntegration Services packages handle events, see Integration Services (SSIS) Event Handlers.

Gli eventi possono essere registrati in qualsiasi provider di log abilitato nel pacchetto.Events can be logged to any log provider that is enabled in the package. I provider di log archiviano informazioni sugli eventi in un archivio dati.Log providers store information about events in a data store. L'attività Script può anche utilizzare il metodo Log per registrare informazioni in un provider di log senza generare un evento.The Script task can also use the Log method to log information to a log provider without raising an event. Per ulteriori informazioni sull'utilizzo di Log metodo, vedere registrazione nell'attività Script.For more information about how to use the Log method, see Logging in the Script Task.

Per generare un evento, l'attività Script chiama uno dei metodi esposti dalla proprietà Events.To raise an event, the Script task calls one of the methods exposed by the Events property. Nella tabella seguente sono elencati i metodi esposti dalla proprietà Events.The following table lists the methods exposed by the Events property.

EventoEvent DescriptionDescription
FireCustomEvent Genera un evento personalizzato definito dall'utente nel pacchetto.Raises a user-defined custom event in the package.
FireError Informa il pacchetto di una condizione di errore.Informs the package of an error condition.
FireInformation Fornisce informazioni all'utente.Provides information to the user.
FireProgress Informa il pacchetto dello stato dell'attività.Informs the package of the progress of the task.
FireQueryCancel Restituisce un valore che indica se il pacchetto richiede che l'attività venga chiusa in modo anomalo.Returns a value that indicates whether the package needs the task to shut down prematurely.
FireWarning Informa il pacchetto che l'attività è in uno stato che garantisce la notifica all'utente, ma non è una condizione di errore.Informs the package that the task is in a state that warrants user notification, but is not an error condition.

Esempio di eventiEvents Example

Nell'esempio seguente viene illustrato come generare eventi dall'attività Script.The following example demonstrates how to raise events from within the Script task. Viene utilizzata una funzione dell'API di Windows nativa per determinare se è disponibile una connessione Internet.The example uses a native Windows API function to determine whether an Internet connection is available. Se non sono disponibili connessioni, viene generato un errore.If no connection is available, it raises an error. Se è in uso una connessione modem potenzialmente volatile, viene generato un avviso.If a potentially volatile modem connection is in use, the example raises a warning. In caso contrario, viene restituito un messaggio informativo indicante che è stata rilevata una connessione Internet.Otherwise, it returns an informational message that an Internet connection has been detected.

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;  

        }  

Vedere ancheSee Also

Integration Services ( SSIS ) Gestori eventi Integration Services (SSIS) Event Handlers
Aggiungere un gestore eventi a un pacchettoAdd an Event Handler to a Package