스크립트 태스크에서 이벤트 발생Raising Events in the Script Task

이벤트를 사용하면 포함하는 패키지에 오류 및 경고와 태스크 진행률 또는 상태 같은 기타 정보를 보고할 수 있습니다.Events provide a way to report errors, warnings, and other information, such as task progress or status, to the containing package. 패키지에서는 이벤트 알림을 관리하기 위한 이벤트 처리기를 제공합니다.The package provides event handlers for managing event notifications. 스크립트 태스크에서 메서드를 호출 하 여 이벤트를 발생 시킬 수는 Events 의 속성은 Dts 개체입니다.The Script task can raise events by calling methods on the Events property of the Dts object. 방법에 대 한 자세한 내용은 Integration ServicesIntegration Services 이벤트를 처리 하는 패키지를 참조 Integration services( Ssis) 이벤트 처리기합니다.For more information about how Integration ServicesIntegration Services packages handle events, see Integration Services (SSIS) Event Handlers.

이벤트는 패키지에서 사용할 수 있도록 설정된 모든 로그 공급자에 로깅될 수 있습니다.Events can be logged to any log provider that is enabled in the package. 로그 공급자는 이벤트에 대한 정보를 데이터 원본에 저장합니다.Log providers store information about events in a data store. 스크립트 태스크에서는 Log 메서드를 사용하여 이벤트를 발생시키지 않고 로그 공급자에 정보를 로깅할 수도 있습니다.The Script task can also use the Log method to log information to a log provider without raising an event. 사용 하는 방법에 대 한 자세한 내용은 Log 메서드를 참조 스크립트 태스크에서 로깅합니다.For more information about how to use the Log method, see Logging in the Script Task.

이벤트를 발생시키기 위해 스크립트 태스크에서는 Events 속성에 의해 제공된 메서드 중 하나를 호출합니다.To raise an event, the Script task calls one of the methods exposed by the Events property. 다음 표에서는 Events 속성에 의해 제공된 메서드를 보여 줍니다.The following table lists the methods exposed by the Events property.

이벤트Event DescriptionDescription
FireCustomEvent 패키지에서 사용자가 정의한 사용자 지정 이벤트를 발생시킵니다.Raises a user-defined custom event in the package.
FireError 패키지에 오류 조건을 알립니다.Informs the package of an error condition.
FireInformation 사용자에게 정보를 제공합니다.Provides information to the user.
FireProgress 패키지에 태스크 진행률을 알립니다.Informs the package of the progress of the task.
FireQueryCancel 패키지에서 태스크를 중간에 종료해야 하는지 여부를 나타내는 값을 반환합니다.Returns a value that indicates whether the package needs the task to shut down prematurely.
FireWarning 태스크가 사용자 알림이 발생할 수 있지만 오류 조건은 아닌 상태에 있음을 패키지에 알립니다.Informs the package that the task is in a state that warrants user notification, but is not an error condition.

이벤트 예Events Example

다음 예에서는 스크립트 태스크 내에서 이벤트를 발생시키는 방법을 보여 줍니다.The following example demonstrates how to raise events from within the Script task. 이 예에서는 네이티브 Windows API 함수를 사용하여 인터넷 연결을 사용할 수 있는지 확인합니다.The example uses a native Windows API function to determine whether an Internet connection is available. 연결을 사용할 수 없으면 오류가 발생합니다.If no connection is available, it raises an error. 불안정할 수 있는 모뎀 연결이 사용 중인 경우에는 경고가 발생합니다.If a potentially volatile modem connection is in use, the example raises a warning. 그렇지 않은 경우 인터넷 연결이 검색되었다는 정보 메시지가 반환됩니다.Otherwise, it returns an informational message that an Internet connection has been detected.

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;  

        }  

관련 항목:See Also

Integration Services ( Ssis) 이벤트 처리기 Integration Services (SSIS) Event Handlers
패키지에 이벤트 처리기를 추가 합니다.Add an Event Handler to a Package