Menaikkan Peristiwa dalam Tugas Skrip
Berlaku untuk: SQL Server SSIS Integration Runtime di Azure Data Factory
Peristiwa menyediakan cara untuk melaporkan kesalahan, peringatan, dan informasi lainnya, seperti kemajuan atau status tugas, ke paket yang berisi. Paket ini menyediakan penanganan aktivitas untuk mengelola pemberitahuan peristiwa. Tugas Skrip dapat menaikkan peristiwa dengan memanggil metode pada Events properti objek Dts . Untuk informasi selengkapnya tentang cara paket Layanan Integrasi menangani peristiwa, lihat Penanganan Aktivitas Integration Services (SSIS).
Peristiwa dapat dicatat ke penyedia log apa pun yang diaktifkan dalam paket. Penyedia log menyimpan informasi tentang peristiwa di penyimpanan data. Tugas Skrip juga dapat menggunakan Log metode untuk mencatat informasi ke penyedia log tanpa menaikkan peristiwa. Untuk informasi selengkapnya tentang cara menggunakan Log metode ini, lihat Pengelogan di Tugas Skrip.
Untuk menaikkan peristiwa, tugas Skrip memanggil salah satu metode yang diekspos oleh Events properti . Tabel berikut mencantumkan metode yang diekspos oleh Events properti .
Kejadian | Deskripsi |
---|---|
FireCustomEvent | Menaikkan peristiwa kustom yang ditentukan pengguna dalam paket. |
FireError | Menginformasikan paket kondisi kesalahan. |
FireInformation | Menyediakan informasi kepada pengguna. |
FireProgress | Menginformasikan paket kemajuan tugas. |
FireQueryCancel | Mengembalikan nilai yang menunjukkan apakah paket memerlukan tugas untuk dimatikan sebelum waktunya. |
FireWarning | Menginformasikan paket bahwa tugas dalam keadaan yang menjamin pemberitahuan pengguna, tetapi bukan kondisi kesalahan. |
Contoh Peristiwa
Contoh berikut menunjukkan cara menaikkan peristiwa dari dalam tugas Skrip. Contoh menggunakan fungsi Windows API asli untuk menentukan apakah koneksi Internet tersedia. Jika tidak ada koneksi yang tersedia, koneksi akan menimbulkan kesalahan. Jika koneksi modem yang berpotensi volatil sedang digunakan, contohnya akan memunculkan peringatan. Jika tidak, ia mengembalikan pesan informasi bahwa koneksi Internet telah terdeteksi.
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;
}
Lihat Juga
Penanganan Aktivitas Integration Services (SSIS)
Menambahkan Penanganan Aktivitas ke Paket