다음을 통해 공유


스크립트 태스크에서 이벤트 발생

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

이벤트는 오류, 경고 및 기타 정보(예: 작업 진행률 또는 상태)를 포함하는 패키지에 보고하는 방법을 제공합니다. 패키지는 이벤트 알림을 관리하기 위한 이벤트 처리기를 제공합니다. 스크립트 태스크는 Dts 개체의 속성에 대한 메서드를 Events 호출하여 이벤트를 발생할 수 있습니다. Integration Services 패키지 처리 이벤트에 대한 자세한 내용은 Integration Services(SSIS) 이벤트 처리기를 참조하세요.

이벤트는 패키지에서 사용할 수 있도록 설정된 모든 로그 공급자에 로깅될 수 있습니다. 로그 공급자는 데이터 저장소에 이벤트에 대한 정보를 저장합니다. 스크립트 태스크는 이벤트를 발생하지 않고도 이 메서드를 사용하여 Log 로그 공급자에 정보를 기록할 수도 있습니다. Log 메서드의 사용 방법은 스크립트 태스크에서 로깅을 참조하십시오.

이벤트를 발생시키기 위해 스크립트 태스크에서는 Events 속성에 의해 제공된 메서드 중 하나를 호출합니다. 다음 표에서는 속성에 의해 노출되는 메서드를 나열합니다 Events .

이벤트 설명
FireCustomEvent 패키지에서 사용자 정의 사용자 지정 이벤트를 발생합니다.
FireError 패키지에 오류 조건을 알릴 수 있습니다.
FireInformation 사용자에게 정보를 제공합니다.
FireProgress 태스크의 진행률을 패키지에 알릴 수 있습니다.
FireQueryCancel 패키지에서 태스크를 중간에 종료해야 하는지 여부를 나타내는 값을 반환합니다.
FireWarning 태스크가 사용자 알림이 발생할 수 있지만 오류 조건은 아닌 상태에 있음을 패키지에 알립니다.

이벤트 예

다음 예에서는 스크립트 태스크 내에서 이벤트를 발생시키는 방법을 보여 줍니다. 이 예제에서는 네이티브 Windows API 함수를 사용하여 인터넷 연결을 사용할 수 있는지 여부를 확인합니다. 사용할 수 있는 연결이 없으면 오류가 발생합니다. 잠재적으로 휘발성 모뎀 연결을 사용하는 경우 이 예제에서는 경고를 발생합니다. 그렇지 않으면 인터넷 연결이 검색되었다는 정보 메시지를 반환합니다.

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

참고 항목

Integration Services(SSIS) 이벤트 처리기
패키지에 이벤트 처리기 추가