Compartilhar via


Gerando eventos na tarefa Script

Os eventos fornecem um modo de relatar erros, avisos e outras informações, como o progresso ou status da tarefa, ao pacote que os contém. O pacote fornece manipuladores de eventos para gerenciar notificações de eventos. A tarefa Script pode gerar eventos chamando métodos na propriedade Events do objeto Dts. Para obter mais informações sobre como pacotes do Integration Services lidam com eventos, consulte Manipuladores de eventos do Integration Services.

Os eventos podem ser registrados em qualquer provedor de log que esteja habilitado no pacote. Provedores de logs armazenam informações sobre eventos em um armazenamento de dados. A tarefa Script também pode usar o método Log para registrar informações para um provedor de logs sem gerar um evento. Para obter mais informações sobre como usar o método Log, consulte Registrando a tarefa Script.

Para gerar um evento, a tarefa Script chama um dos métodos expostos pela propriedade Events. A tabela a seguir lista os métodos expostos pela propriedade Events.

Evento

Descrição

FireCustomEvent

Gera um evento personalizado definido pelo usuário no pacote.

FireError

Informa o pacote sobre uma condição de erro.

FireInformation

Fornece informações ao usuário.

FireProgress

Informa ao pacote sobre o progresso da tarefa.

FireQueryCancel

Retorna um valor que indica se o pacote requer o fechamento prematuro da tarefa.

FireWarning

Informa ao pacote que a tarefa está em um estado que garante a notificação do usuário, mas não é uma condição de erro.

Exemplo de eventos

O exemplo a seguir demonstra como gerar eventos dentro da tarefa Script. O exemplo usa uma função nativa de API do Windows para determinar se uma conexão de Internet está disponível. Se nenhuma conexão estiver disponível, será gerado um erro. Se uma conexão de modem potencialmente volátil estiver em uso, o exemplo gerará um aviso. Caso contrário, ela retornará uma mensagem informativa de que uma conexão de Internet foi detectada.

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;

        }
Ícone do Integration Services (pequeno) Fique atualizado com o Integration Services

Para obter os mais recentes downloads, artigos, exemplos e vídeos da Microsoft, bem como soluções selecionadas da comunidade, visite a página do Integration Services no MSDN ou TechNet:

Para receber uma notificação automática das atualizações, assine os feeds RSS disponíveis na página.