Höjning av händelser i skriptaktiviteten

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Händelser ger ett sätt att rapportera fel, varningar och annan information, såsom uppgiftsframsteg eller status, till det innehållande paketet. Paketet tillhandahåller händelsehanterare för att hantera händelsenotiser. Script-uppgiften kan skapa händelser genom att anropa metoder på egenskapen Events hos Dts-objektet . För mer information om hur Integration Services-paket hanterar händelser, se Integration Services (SSIS) Event Handlers.

Händelser kan loggas till vilken loggleverantör som helst som är aktiverad i paketet. Loggleverantörer lagrar information om händelser i en datalagring. Skriptuppgiften kan också använda metoden Log för att logga information till en loggleverantör utan att skapa en händelse. För mer information om hur du använder metoden Log , se Loggning i Skriptuppgiften.

För att ta upp en händelse anropar Script-uppgiften en av metoderna som exponeras av egenskapen Events . Följande tabell listar de metoder som exponeras av egenskapen Events .

Event Description
FireCustomEvent Skapar en användardefinierad anpassad händelse i paketet.
FireError Informerar paketet om ett felvillkor.
FireInformation Ger information till användaren.
FireProgress Informerar paketet om uppgiftens framsteg.
FireQueryCancel Returnerar ett värde som indikerar om paketet behöver att uppgiften stängs av i förtid.
FireWarning Informerar paketet om att uppgiften är i ett tillstånd som kräver användarnotis, men inte är ett felvillkor.

Evenemangsexempel

Följande exempel visar hur man kan skapa händelser från Script-uppgiften. Exemplet använder en inbyggd Windows API-funktion för att avgöra om en internetanslutning är tillgänglig. Om ingen anslutning finns tillgänglig ger det ett felmeddelande. Om en potentiellt volatil modemanslutning används, väcker exemplet en varning. Annars returnerar den ett informationsmeddelande om att en internetanslutning har upptäckts.

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