Podnoszenie zdarzenia w zadaniu skryptów
Zdarzenia umożliwiają raportowanie błędów, ostrzeżeń i innych informacji, takich jak postępu zadania lub stan, do pakiet zawierającego.Pakiet zawiera programów obsługi zdarzeń związanych z zarządzaniem powiadomień o zdarzeniach.Zadania skryptu można podnieść zdarzenia przez wywołanie metody na Events() Właściwość Dts obiekt. Aby uzyskać więcej informacji na temat sposobu Integration Services pakiety uchwyt zdarzeń, zobacz Obsługa zdarzeń usług integracja.
Mogą być rejestrowane zdarzenia do żadnego dostawca dziennika, który jest włączony w pakiet.Włączeni przechowują informacje o zdarzeniach w magazynie danych.Można także użyć zadania skryptu Log(String, Int32, array<Byte[]) Metoda rejestrować informacje do dostawca dziennika bez podnoszenia zdarzenie. Aby uzyskać więcej informacji na temat używania Log(String, Int32, array<Byte[]) Metoda, zobacz Logging in the Script Task.
Aby podnieść zdarzenie, zadanie skryptu wywołuje jednej z metod przez Events() Właściwość. W poniższej tabela wymieniono metody udostępniane przez Events() Właściwość.
zdarzenie |
Description |
---|---|
FireCustomEvent(String, String, array<Object[]%, String, Boolean%) |
Podnosi użytkownika niestandardowego zdarzenie w pakiet. |
FireError(Int32, String, String, String, Int32) |
Informuje o pakiet warunek błędu. |
FireInformation(Int32, String, String, String, Int32, Boolean%) |
Zawiera informacje dla użytkownika. |
FireProgress(String, Int32, Int32, Int32, String, Boolean%) |
Informuje o pakiet postęp zadania. |
FireQueryCancel() |
Zwraca wartość wskazującą, czy pakiet powinien zadań do zamknięcia przedwcześnie. |
FireWarning(Int32, String, String, String, Int32) |
Informuje o pakiecie zadanie jest w stanie, które wymaga powiadomienie użytkowników, ale nie jest błąd. |
Przykładowy zdarzenia
Poniższy przykład ilustruje sposób wywołania zdarzeń z zadań skryptów w ciągu.W przykładzie użyto rodzimych funkcja interfejsu API systemu Windows można określić, czy dostępne jest połączenie z Internetem.Jeśli połączenie nie jest dostępny, zgłasza błąd.Jeśli połączenie modemowe potencjalnie nietrwała jest używany, w przykładzie wywołuje komunikat ostrzegawczy.W przeciwnym wypadku zwraca komunikat informacyjny Wykryto połączenie z Internetem.
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;
}
|
See Also