SQL Server/SSIS 강좌

이벤트 처리 및 오류 출력 – 다양한 이벤트로 오류를 출력하자

SungWookKang 2015. 7. 16. 10:20
반응형

이벤트 처리 및 오류 출력 – 다양한 이벤트로 오류를 출력하자

 

안녕하세요 강서욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)

이번 시간에는 이벤트 처리 및 오류 출력에 대해서 알아 보도록 하겠습니다.

 

SSIS에서는 패키지 및 패키지 내의 개별 작업 개체들이 실행 될 때 이벤트가 발생 합니다. 패키지에서 지정한 오류가 발생하면 OnError 이벤트가 발생되며 오류와 관련된 시스템 변수에 저장된 정보들을 이용하여 오류처리 작업을 수행 할 수 있습니다.

 

[이벤트 처리기] 탭에서 이벤트에 대한 처리작업을 수행 할 수 있습니다. 왼쪽의 실행 파일 부분에서는 이벤트 처리기가 작동될 범위를 지정하며 오른쪽의 이벤트 처리기에서는 처리할 이벤트를 선택 할 수 있습니다.

 

종류

이벤트

OnError

오류가 발생할 때 실행 개체에 의해 발생.

OnExecStatusChanged

실행 상태가 변경될 때 실행 개체에 의해 발생.

OnInformation

정보 보고를 위한 실행 개체의 유효성 검사 및 실행 중에 발생. 오류 또는 경고를 제외한 정보만 포함.

OnPostExecute

실행을 마친 바로 다음 실행 개체에 의해 발생.

OnPostValidate

유효성 검사가 완료될 때 실행 개체에 의해 발생

OnPreExecute

실행되기 바로 전에 실행 개체에 의해 발생

OnPreValidate

유효성 검사가 시작될 때 실행 개체에 의해 발생

OnProgress

실행 개체의 진행 상태를 측정할 수 있는 경우 실행 개체에 의해 발생.

OnQueryCancle

실행 중지 시기를 결정하기 위해 실행 개체에 의해 발생

OnTaskFailed

작업이 실패할 때 해당 작업에 의해 발생

OnVariableValueChanged

변수 값이 변경될 때 실행 개체에 의해 발생. 변수가 정의되는 실행 개체에 의해 발생. 변수에 대한 RaiseChangeEvent 속성을 False로 설정한 경우에는 이벤트가 발생하지 않음.

OnWarning

경고가 발생할 때 실행 개체에 의해 발생.

 

이벤트 처리 수준은 계층으로 관리 됩니다. Package 수준으로 OnError 이벤트 처리기를 설정하였다면 이 이벤트 처리기는 패키지에서 발생하는 모든 이벤트 오류에 대해 수행 합니다.

 

이벤트 처리기 작업 영역에서는 제어 흐름 영역이나 데이터 흐름 영역보다 더 많은 시스템 변수가 있습니다. 시스템과 관련된 기본적인 정보 외에도 해당 이벤트 정보를 저장하기 위한 변수들이 추가되어 있습니다. 예를 들어 OnError 이벤트 처리기에는 어떤 작업 개체 ID에서 오류가 발생되었으며([시스템::TaskID]), 오류 코든는 무엇이며([시스템::ErrorCode]), 오류 처리기가 시작된 시간이 언제인지([시스템::EventHandelerStartTime])등의 정보를 가지고 있는 변수들이 있습니다.

 

[오류 출력 세가지]

 

  1. 제어 흐름 영역의 각 작업들이 실패로 처리될 경우에 대한 설정으로 선행 제약 조건을 실패로 설정한 후 작업이 실패가 되었을 때 처리할 다음 작업과 연결시키는 방식으로 두 작업을 연결하는 연결선(선행 제약 조건)은 적색으로 표시 됩니다.

    흐름선에서 마우스 오른쪽 클릭하여 [실패]를 선택 합니다.

     

     

  2. 이벤트 처리기의 OnError 이벤트를 사용하는 방식으로 패키지 내의 작업개체에서 오류가 발생하면 OnError 이벤트가 발생하며 이벤트 처리기의 OnError 처리 영역에 지정한 작업들이 수행되도록 구성하는 방식 입니다.

 

  1. 데이터 흐름 영역 내에서 원본 변환, 대상 등에서 오류를 출력하는 방식 입니다.

    오류 출력은 데이터 흐름 영역에서만 설정할 수 있습니다.

     

[데이터 흐름 작업 수행 시 발생 할 수 있는 오류]

  • 데이터 원본 오류 : 연결 관리자에서 지정한 연결 방식을 이용하여 DataReader 원본, OLE DB 원본, 플랫 파일 원본 등 원본 개체를 이용하여 읽어 올 때 연결에서 정의된 열의 정보가 실제 데이터와 다른 경우 오류가 발생.
  • 데이터 변환 오류 : 병합 변환이나 데이터 변환, 조회, 파생 열 등과 같은 변환 작업을 수행할 때 발생할 수 DT는 오류.
  • 데이터 대상 오류 : 데이터 원본 또는 변환 개체에서 대상으로 지정된 데이터 연결에 저장할 때 발생할 수 있는 오류.

     

데이터 흐름 영역의 각 개체에서 오류 출력을 구성하는 방식은 모두 동일 합니다. 원본이나 대상, 또는 편집기에 있는 오류 출력 탭을 이용하거나 각 개체를 적색 선으로 연결하면 오류 출력을 구성할 수 있는 설정 창이 나타납니다.

 

적색선을 연결하면 다음과 같은 오류 출력 창이 나타 납니다.

 

오류 출력은 다섯 개의 열로 구성되어 있습니다.

입력 또는 출력은 현재 오류 구성의 작업 이름에 대한 입력 또는 출력을 나타냅니다. 오류 출력 구성은 각 데이터의 각 열 별로 설정을 할 수 있습니다. 중요하지 않는 열에서 오류가 발생시 [오류 무시]를 설정하면 오류가 발생하더라도 처리 작업을 계속 진행 할 수 있습니다.

데이터 처리 중 [오류]와 [잘림]을 구분하여 처리 합니다. 데이터 오류에 대한 처리는 [오류 열]에서 설정하며 데이터 잘림에 대한 처리 방식은 [잘림 열]에서 설정 합니다.

  • 오류 무시 : 오류 또는 데이터 잘림이 발생하더라도 이를 무시하고 계속 작업을 진행.
  • 행 리디렉션 : 오류 또는 데이터 잘림 현상이 발생할 경우 해당 오류 데이터를 별도의 경로(적색 선)로 출력. 행 리디렉션으로 설정한 경우 반드시 적색 선을 다른 개체와 연결시켜야 합니다.
  • 구성 요소 실패 : 오류 또는 데이터 잘림 현상이 발생할 경우 작업을 실패로 처리.

 

설정해야 할 열이 여러 개이며 모두 동일한 설정을 하고자 할 경우에는 여러 열을 선택한 후 [이 값을 선택한 셀에 설정(S)]기능을 이용하여 한번에 설정 할 수 있습니다.

 

행 리디렉션 방식으로 오류가 처리될 때에는 오류 코드(ErrorCode_와 오류가 발생된 열의 번호(ErrorColumn)정보가 추가되어 출력됩니다.

 

반응형