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 |
---|---|
Gera um evento personalizado definido pelo usuário no pacote. |
|
Informa o pacote sobre uma condição de erro. |
|
Fornece informações ao usuário. |
|
Informa ao pacote sobre o progresso da tarefa. |
|
Retorna um valor que indica se o pacote requer o fechamento prematuro da tarefa. |
|
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;
}
|
Consulte também