Condividi tramite


Generazione di eventi nell'attività Script

Gli eventi consentono di segnalare errori, avvisi e altre informazioni, ad esempio l'avanzamento o lo stato delle attività, al pacchetto contenitore. Il pacchetto fornisce gestori eventi per la gestione di notifiche degli eventi. L'attività Script può generare eventi chiamando metodi sulla proprietà Events dell'oggetto Dts. Per ulteriori informazioni sulla gestione degli eventi da parte dei pacchetti di Integration Services, vedere Gestori di eventi in Integration Services.

Gli eventi possono essere registrati in qualsiasi provider di log abilitato nel pacchetto. I provider di log archiviano informazioni sugli eventi in un archivio dati. L'attività Script può anche utilizzare il metodo Log per registrare informazioni in un provider di log senza generare un evento. Per ulteriori informazioni sull'utilizzo del metodo Log, vedere Registrazione nell'attività Script.

Per generare un evento, l'attività Script chiama uno dei metodi esposti dalla proprietà Events. Nella tabella seguente sono elencati i metodi esposti dalla proprietà Events.

Evento

Descrizione

FireCustomEvent

Genera un evento personalizzato definito dall'utente nel pacchetto.

FireError

Informa il pacchetto di una condizione di errore.

FireInformation

Fornisce informazioni all'utente.

FireProgress

Informa il pacchetto dello stato dell'attività.

FireQueryCancel

Restituisce un valore che indica se il pacchetto richiede che l'attività venga chiusa in modo anomalo.

FireWarning

Informa il pacchetto che l'attività è in uno stato che garantisce la notifica all'utente, ma non è una condizione di errore.

Esempio di eventi

Nell'esempio seguente viene illustrato come generare eventi dall'attività Script. Viene utilizzata una funzione dell'API di Windows nativa per determinare se è disponibile una connessione Internet. Se non sono disponibili connessioni, viene generato un errore. Se è in uso una connessione modem potenzialmente volatile, viene generato un avviso. In caso contrario, viene restituito un messaggio informativo indicante che è stata rilevata una connessione 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;

        }
Icona di Integration Services (piccola) Rimanere aggiornati con Integration Services

Per informazioni sui download, gli articoli, gli esempi e i video Microsoft più recenti, nonché sulle soluzioni selezionate dalla community, visitare la pagina Integration Services su MSDN o Technet:

Per ricevere notifica automatica su questi aggiornamenti, sottoscrivere i feed RSS disponibili nella pagina.