Betik Görevinde Olayları Tetikleme

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Olaylar, hataları, uyarıları ve görev ilerlemesi veya durum gibi diğer bilgileri içeren pakete bildirme imkanı sunar. Paket, olay bildirimlerini yönetmek için olay yöneticileri sağlar. Script görevi, Dts nesnesinin özelliği üzerinde Events metodlar çağırarak olayları başlatabilir. Entegrasyon Hizmetleri paketlerinin olayları nasıl işlettiği hakkında daha fazla bilgi için Entegrasyon Hizmetleri (SSIS) Olay Yöneticileri'ne bakınız.

Etkinlikler, pakette etkinleştirilmiş herhangi bir log sağlayıcısına kaydedilebilir. Günlük sağlayıcıları, olaylarla ilgili bilgileri bir veri deposunda saklar. Script görevi, Log olay yaratmadan bilgi kaydetmek için de bu yöntemi kullanabilir. Yöntemin Log nasıl kullanılacağı hakkında daha fazla bilgi için Script Task'a Giriş bölümünü inceleyebilirsiniz.

Bir olay oluşturmak için, Script görevi özelliğin Events açığa çıkardığı yöntemlerden birini çağırır. Aşağıdaki tablo, özellik tarafından ortaya çıkan Events yöntemleri listeler.

Event Description
FireCustomEvent Pakette kullanıcı tarafından tanımlanan özel bir olay oluşturur.
FireError Pakete hata durumu bildirilir.
FireInformation Kullanıcıya bilgi sağlar.
FireProgress Pakete görevin ilerleyişini bildirir.
FireQueryCancel Paketin görevin erken kapatılması için gerekip gerekmediğini gösteren bir değer döndürür.
FireWarning Pakete, görevin kullanıcı bildirimi gerektiren bir durumda olduğunu bildirir, ancak hata durumu değildir.

Etkinlik Örneği

Aşağıdaki örnek, Script görevi içinden olayların nasıl yükseltileceğini gösterir. Örnek, internet bağlantısının mevcut olup olmadığını belirlemek için yerel Windows API fonksiyonu kullanır. Bağlantı yoksa, hata ortaya çıkar. Eğer potansiyel olarak uçucu bir modem bağlantısı kullanılıyorsa, örnek bir uyarı getirir. Aksi takdirde, internet bağlantısının tespit edildiğine dair bilgilendirici bir mesaj döner.

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;  
  
        }