스크립트 태스크에서 이벤트 발생
적용 대상: 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;
}