Integration Services(SSIS) 이벤트 처리기Integration Services (SSIS) Event Handlers

런타임 시 실행 개체(패키지 및 Foreach 루프, For 루프, 시퀀스 및 태스크 호스트 컨테이너)는 이벤트를 발생시킵니다.At run time, executables (packages and Foreach Loop, For Loop, Sequence, and task host containers) raise events. 예를 들어 오류가 발생하면 OnError 이벤트가 발생합니다.For example, an OnError event is raised when an error occurs. 이러한 이벤트에 대한 사용자 지정 이벤트 처리기를 만들면 패키지 기능을 확장하고 런타임 시 패키지를 더 쉽게 관리할 수 있습니다.You can create custom event handlers for these events to extend package functionality and make packages easier to manage at run time. 이벤트 처리기는 다음과 같은 태스크를 수행할 수 있습니다.Event handlers can perform tasks such as the following:

  • 패키지 또는 태스크 실행이 완료될 때 임시 데이터 저장소를 삭제합니다.Clean up temporary data storage when a package or task finishes running.

  • 패키지 실행 전에 리소스 사용 가능 여부를 확인하기 위해 시스템 정보를 검색합니다.Retrieve system information to assess resource availability before a package runs.

  • 참조 테이블에서 조회가 실패하는 경우 테이블의 데이터를 새로 고칩니다.Refresh data in a table when a lookup in a reference table fails.

  • 오류 또는 경고가 발생하거나 태스크가 실패하는 경우 전자 메일 메시지를 보냅니다.Send an e-mail message when an error or a warning occurs or when a task fails.

    이벤트에 이벤트 처리기가 없으면 패키지의 컨테이너 계층에서 다음 순서의 컨테이너로 이벤트가 전달됩니다.If an event has no event handler, the event is raised to the next container up the container hierarchy in a package. 이 컨테이너에 이벤트 처리기가 있으면 이벤트에 대한 응답으로 이 이벤트 처리기가 실행됩니다.If this container has an event handler, the event handler runs in response to the event. 그렇지 않으면 이벤트가 다시 컨테이너 계층에서 다음 순서의 컨테이너로 전달됩니다.If not, the event is raised to the next container up the container hierarchy.

    다음 다이어그램은 하나의 SQL 실행 태스크가 포함된 For 루프 컨테이너가 들어 있는 간단한 패키지를 보여 줍니다.The following diagram shows a simple package that has a For Loop container that contains one Execute SQL task.

    패키지, For 루프, 태스크 호스트 및 SQL 실행 태스크Package, For Loop, task host, and Execute SQL task

    이 패키지에는 OnError 이벤트에 대한 이벤트 처리기만 들어 있습니다.Only the package has an event handler, for its OnError event. SQL 실행 태스크가 실행될 때 오류가 발생하면 패키지에 대한 OnError 이벤트 처리기가 실행됩니다.If an error occurs when the Execute SQL task runs, the OnError event handler for the package runs. 다음 다이어그램은 OnError 이벤트 처리기가 패키지를 실행하도록 만드는 호출 시퀀스를 보여 줍니다.The following diagram shows the sequence of calls that causes the OnError event handler for the package to execute.

    이벤트 처리기 흐름Event handler flow

    이벤트 처리기는 이벤트 처리기 컬렉션의 멤버이며 모든 컨테이너에는 이 컬렉션이 포함됩니다.Event handlers are members of an event handler collection, and all containers include this collection. SSISSSIS 디자이너를 사용하여 패키지를 만드는 경우에는 디자이너의 패키지 탐색기 탭에 있는 이벤트 처리기 SSISSSIS 폴더에서 이벤트 처리기 컬렉션의 멤버를 확인할 수 있습니다.If you create the package using SSISSSIS Designer, you can see the members of the event handler collections in the Event Handlers folders on the Package Explorer tab of SSISSSIS Designer.

    다음과 같은 방법으로 이벤트 처리기 컨테이너를 구성할 수 있습니다.You can configure the event handler container in the following ways:

  • 이벤트 처리기에 대한 이름 및 설명을 지정합니다.Specify a name and description for the event handler.

  • 이벤트 처리기 실행 여부, 이벤트 처리기 실패 시 패키지가 실패하는지 여부 및 이벤트 처리기 실패 시 발생할 수 있는 오류 개수를 나타냅니다.Indicate whether the event handler runs, whether the package fails if the event handler fails, and the number of errors that can occur before the event handler fails.

  • 이벤트 처리기가 런타임에 반환하는 실제 실행 결과 대신 반환할 실행 결과를 지정합니다.Specify an execution result to return instead of the actual execution result that the event handler returns at run time.

  • 이벤트 처리기의 트랜잭션 옵션을 지정합니다.Specify the transaction option for the event handler.

  • 이벤트 처리기에서 사용되는 로깅 모드를 지정합니다.Specify the logging mode that the event handler uses.

이벤트 처리기 내용Event Handler Content

이벤트 처리기를 만드는 방법은 패키지를 빌드하는 방법과 비슷합니다. 이벤트 처리기에는 제어 흐름으로 순서가 지정된 태스크 및 컨테이너가 포함되며, 데이터 흐름이 포함될 수도 있습니다.Creating an event handler is similar to building a package; an event handler has tasks and containers, which are sequenced into a control flow, and an event handler can also include data flows. SSISSSIS 디자이너에는 사용자 지정 이벤트 처리기를 만들기 위한 이벤트 처리기 탭이 포함됩니다.The SSISSSIS Designer includes the Event Handlers tab for creating custom event handlers.

이벤트 처리기를 프로그래밍 방식으로 만들 수도 있습니다.You can also create event handlers programmatically. 자세한 내용은 프로그래밍 방식으로 이벤트 처리를 참조하세요.For more information, see Handling Events Programmatically.

런타임 이벤트Run-Time Events

다음 표에서는 Integration ServicesIntegration Services 에서 제공되는 이벤트 처리기를 나열하고 이벤트 처리기를 실행하는 런타임 이벤트에 대해 설명합니다.The following table lists the event handlers that Integration ServicesIntegration Services provides, and describes the run-time events that cause the event handler to run.

이벤트 처리기Event handler 이벤트Event
OnErrorOnError OnError 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnError event. 이 이벤트는 오류가 발생할 때 실행 개체에 의해 발생합니다.This event is raised by an executable when an error occurs.
OnExecStatusChangedOnExecStatusChanged OnExecStatusChanged 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnExecStatusChanged event. 이 이벤트는 실행 상태가 변경될 때 실행 개체에 의해 발생합니다.This event is raised by an executable when its execution status changes.
OnInformationOnInformation OnInformation 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnInformation event. 이 이벤트는 정보 보고를 위한 실행 개체의 유효성 검사 및 실행 중에 발생합니다.This event is raised during the validation and execution of an executable to report information. 이 이벤트에는 오류 또는 경고를 제외한 정보만 포함됩니다.This event conveys information only, no errors or warnings.
OnPostExecuteOnPostExecute OnPostExecute 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnPostExecute event. 이 이벤트는 실행을 마친 바로 다음 실행 개체에 의해 발생합니다.This event is raised by an executable immediately after it has finished running.
OnPostValidateOnPostValidate OnPostValidate 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnPostValidate event. 이 이벤트는 유효성 검사가 완료될 때 실행 개체에 의해 발생합니다.This event is raised by an executable when its validation is finished.
OnPreExecuteOnPreExecute OnPreExecute 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnPreExecute event. 이 이벤트는 실행되기 바로 전에 실행 개체에 의해 발생합니다.This event is raised by an executable immediately before it runs.
OnPreValidateOnPreValidate OnPreValidate 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnPreValidate event. 이 이벤트는 유효성 검사가 시작될 때 실행 개체에 의해 발생합니다.This event is raised by an executable when its validation starts.
OnProgressOnProgress OnProgress 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnProgress event. 이 이벤트는 실행 개체의 진행 상태를 측정할 수 있는 경우 실행 개체에 의해 발생합니다.This event is raised by an executable when measurable progress is made by the executable.
OnQueryCancelOnQueryCancel OnQueryCancel 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnQueryCancel event. 이 이벤트는 실행 중지 시기를 결정하기 위해 실행 개체에 의해 발생합니다.This event is raised by an executable to determine whether it should stop running.
OnTaskFailedOnTaskFailed OnTaskFailed 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnTaskFailed event. 이 이벤트는 작업이 실패할 때 해당 태스크에 의해 발생합니다.This event is raised by a task when it fails.
OnVariableValueChangedOnVariableValueChanged OnVariableValueChanged 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnVariableValueChanged event. 이 이벤트는 변수 값이 변경될 때 실행 개체에 의해 발생합니다.This event is raised by an executable when the value of a variable changes. 이 이벤트는 변수가 정의되는 실행 개체에 의해 발생합니다.The event is raised by the executable on which the variable is defined. 변수에 대한 RaiseChangeEvent 속성을 False로 설정한 경우에는 이 이벤트가 발생하지 않습니다.This event is not raised if you set the RaiseChangeEvent property for the variable to False. 자세한 내용은 Integration Services(SSIS) 변수를 참조하세요.For more information, see Integration Services (SSIS) Variables.
OnWarningOnWarning OnWarning 이벤트에 대한 이벤트 처리기입니다.The event handler for the OnWarning event. 이 이벤트는 경고가 발생할 때 실행 개체에 의해 발생합니다.This event is raised by an executable when a warning occurs.

패키지에 이벤트 처리기 추가Add an event handler to a package

컨테이너와 태스크는 런타임에 이벤트를 발생시킵니다.At run time, containers and tasks raise events. 이벤트가 발생할 때 워크플로를 실행하여 이벤트에 응답하는 사용자 지정 이벤트 처리기를 만들 수 있습니다.You can create custom event handlers that respond to these events by running a workflow when the event is raised. 예를 들어 태스크가 실패하면 전자 메일 메시지를 보내는 이벤트 처리기를 만들 수 있습니다.For example, you can create an event handler that sends an e-mail message when a task fails.

이벤트 처리기는 패키지와 비슷합니다.An event handler is similar to a package. 패키지와 같이 이벤트 처리기에서는 변수에 대한 범위를 제공할 수 있으며 제어 흐름과 선택적 데이터 흐름이 포함됩니다.Like a package, an event handler can provide scope for variables, and includes a control flow and optional data flows. 패키지, Foreach 루프 컨테이너, For 루프 컨테이너, 시퀀스 컨테이너 및 모든 태스크에 대해 이벤트 처리기를 만들 수 있습니다.You can build event handlers for packages, the Foreach Loop container, the For Loop container, the Sequence container, and all tasks.

디자이너에서 이벤트 처리기 SSISSSIS 탭의 디자인 화면을 사용하여 이벤트 처리기를 만들 수 있습니다.You create event handlers by using the design surface of the Event Handlers tab in SSISSSIS Designer.

이벤트 처리기 탭이 활성화되면 디자이너의 도구 상자에 있는 제어 흐름 항목 유지 관리 계획 태스크 SSISSSIS 노드에 이벤트 처리기의 제어 흐름을 작성하기 위한 태스크와 컨테이너가 포함됩니다.When the Event Handlers tab is active, the Control Flow Items and Maintenance Plan Tasks nodes of the Toolbox in SSISSSIS Designer contain the task and containers for building the control flow in the event handler. 데이터 흐름 원본, 변환데이터 흐름 대상 노드에는 이벤트 처리기의 데이터 흐름을 작성하기 위한 데이터 원본, 변환 및 대상이 포함됩니다.The Data Flow Sources, Transformations, and Data Flow Destinations nodes contain the data sources, transformations, and destinations for building the data flows in the event handler. 자세한 내용은 Control FlowData Flow를 참조하세요.For more information, see Control Flow and Data Flow.

이벤트 처리기 탭에는 또한 이벤트 처리기에서 서버 및 데이터 원본에 연결하는 데 사용하는 연결 관리자를 만들고 수정할 수 있는 연결 관리자 영역이 포함됩니다.The Event Handlers tab also includes the Connections Managers area where you can create and modify the connection managers that event handlers use to connect to servers and data sources. 자세한 내용은 연결 관리자 만들기를 참조하세요.For more information, see Create Connection Managers.

이벤트 처리기 탭에서 이벤트 처리기를 추가 합니다.Add an event handler on the Event Handlers tab

  1. SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에서 원하는 패키지가 들어 있는 Integration ServicesIntegration Services 프로젝트를 엽니다.In SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT), open the Integration ServicesIntegration Services project that contains the package you want.

  2. 솔루션 탐색기에서 패키지를 두 번 클릭하여 엽니다.In Solution Explorer, double-click the package to open it.

  3. 이벤트 처리기 탭을 클릭합니다.Click the Event Handlers tab.

    디자인 화면에 이벤트 처리기의 스크린샷Screenshot of design surface with event handler

    이벤트 처리기에서 제어 흐름과 데이터 흐름을 만드는 방법은 패키지에서 제어 흐름과 데이터 흐름을 만드는 방법과 비슷합니다.Creating the control flow and data flows in an event handler is similar to creating the control flow and data flows in a package. 자세한 내용은 Control FlowData Flow를 참조하세요.For more information, see Control Flow and Data Flow.

  4. 실행 파일 목록에서 이벤트 처리기를 만들 실행 파일을 선택합니다.In the Executable list, select the executable for which you want to create an event handler.

  5. 이벤트 처리기 목록에서 만들 이벤트 처리기를 선택합니다.In the Event handler list, select the event handler you want to build.

  6. 이벤트 처리기 탭의 디자인 화면에서 링크를 클릭합니다.Click the link on the design surface of the Event Handler tab.

  7. 이벤트 처리기에 제어 흐름 항목을 추가하고 제어 흐름 항목 간에 제약 조건을 끌어서 선행 제약 조건을 사용하는 항목을 연결합니다.Add control flow items to the event handler, and connect items using a precedence constraint by dragging the constraint from one control flow item to another. 자세한 내용은 Control Flow을 참조하세요.For more information, see Control Flow.

  8. 필요에 따라 데이터 흐름 탭의 디자인 화면에 데이터 흐름 태스크를 추가하고 이벤트 처리기의 데이터 흐름을 만들 수도 있습니다.Optionally, add a Data Flow task, and on the design surface of the Data Flow tab, create a data flow for the event handler. 자세한 내용은 Data Flow을 참조하세요.For more information, see Data Flow.

  9. 파일 메뉴에서 선택한 항목 저장 을 클릭하여 패키지를 저장합니다.On the File menu, click Save Selected Items to save the package.

이벤트 처리기의 속성 설정Set the properties of an event handler

**** 의 속성 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) 창을 사용하거나 프로그래밍 방식으로 속성을 설정할 수 있습니다.You can set properties in the Properties window of SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT) or programmatically.

SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)에서 이러한 속성을 설정하는 방법에 대한 자세한 내용은 태스크 또는 컨테이너의 속성 설정을 참조하세요.For information about how to set these properties in SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT), see Set the Properties of a Task or Container.

이러한 속성을 프로그래밍 방식으로 설정하는 방법에 대한 자세한 내용은 DtsEventHandler를 참조하세요.For information about programmatically setting these properties, see DtsEventHandler.

패키지에 이벤트 처리기를 추가하는 방법에 대한 자세한 내용은 패키지에 이벤트 처리기 추가를 참조하세요.For information about how to add an event handler to a package, see Add an Event Handler to a Package.