Generazione di eventi nell'attività Script
Gli eventi consentono di segnalare errori, avvisi e altre informazioni, ad esempio l'avanzamento o lo stato delle attività, al pacchetto contenitore. Il pacchetto fornisce gestori eventi per la gestione di notifiche degli eventi. L'attività Script può generare eventi chiamando metodi sulla proprietà Events dell'oggetto Dts. Per ulteriori informazioni sulla gestione degli eventi da parte dei pacchetti di Integration Services, vedere Gestori di eventi in Integration Services.
Gli eventi possono essere registrati in qualsiasi provider di log abilitato nel pacchetto. I provider di log archiviano informazioni sugli eventi in un archivio dati. L'attività Script può anche utilizzare il metodo Log per registrare informazioni in un provider di log senza generare un evento. Per ulteriori informazioni sull'utilizzo del metodo Log, vedere Registrazione nell'attività Script.
Per generare un evento, l'attività Script chiama uno dei metodi esposti dalla proprietà Events. Nella tabella seguente sono elencati i metodi esposti dalla proprietà Events.
Evento |
Descrizione |
---|---|
Genera un evento personalizzato definito dall'utente nel pacchetto. |
|
Informa il pacchetto di una condizione di errore. |
|
Fornisce informazioni all'utente. |
|
Informa il pacchetto dello stato dell'attività. |
|
Restituisce un valore che indica se il pacchetto richiede che l'attività venga chiusa in modo anomalo. |
|
Informa il pacchetto che l'attività è in uno stato che garantisce la notifica all'utente, ma non è una condizione di errore. |
Esempio di eventi
Nell'esempio seguente viene illustrato come generare eventi dall'attività Script. Viene utilizzata una funzione dell'API di Windows nativa per determinare se è disponibile una connessione Internet. Se non sono disponibili connessioni, viene generato un errore. Se è in uso una connessione modem potenzialmente volatile, viene generato un avviso. In caso contrario, viene restituito un messaggio informativo indicante che è stata rilevata una connessione Internet.
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;
}
|
Vedere anche