Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:SQL Server
SSIS Integration Runtime v rámci Azure Data Factory
Události umožňují hlásit chyby, varování a další informace, jako je průběh úkolů nebo stav, do obsahujícího balíčku. Balíček poskytuje obslužníky událostí pro správu oznámení o událostech. Úloha Script může vyvolávat události vyvoláváním metod na Events vlastnosti objektu Dts . Pro více informací o tom, jak balíčky integračních služeb zpracovávají události, viz Integration Services (SSIS) Event Handlers.
Události lze zaznamenat do jakéhokoli poskytovatele logů, který je v balíčku povolen. Poskytovatelé logů ukládají informace o událostech do datového úložiště. Skriptní úloha může také použít Log metodu k zaznamenání informací poskytovateli logů bez vyvolání události. Pro více informací o tom, jak metodu Log používat, viz Přihlášení v úlohě skriptu.
Pro vyvolání události úkol Script volá jednu z metod vystavených vlastností Events . Následující tabulka uvádí metody, které tato vlastnost Events odhaluje.
| Event | Description |
|---|---|
| FireCustomEvent | V balíčku se zobrazí uživatelem definovaná vlastní událost. |
| FireError | Informuje balíček o chybové podmíně. |
| FireInformation | Poskytuje uživateli informace. |
| FireProgress | Informuje balíček o průběhu úkolu. |
| FireQueryCancel | Vrátí hodnotu, která ukazuje, zda balíček potřebuje předčasné ukončení úkolu. |
| FireWarning | Informuje balík, že úkol je ve stavu, který vyžaduje upozornění uživatele, ale není to chybový stav. |
Příklad událostí
Následující příklad ukazuje, jak vyvolávat události přímo ze skriptní úlohy. Příklad využívá nativní funkci Windows API k určení, zda je dostupné internetové připojení. Pokud není k dispozici žádné připojení, zobrazí se chyba. Pokud je v provozu potenciálně volatilní modemové připojení, příklad vyvolává varování. Jinak vrací informační zprávu, že bylo detekováno internetové připojení.
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;
}