Bagikan melalui


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