정보, 통신, 기술/BI와 DB

SSIS에서 오류가 발생한 데이터 로그에 쌓기

최윤호 2011. 11. 24. 23:13
반응형

업무에서 SSIS를 사용하다보니 하나, 둘 생각해야 할 것들이 생깁니다. 역시 그냥 데이터 추출해서, 간단히 꽂는 것만 알아서는 "제대로" 업무에 적용하기가 쉽지 않습니다.
상당히 직관적인 이름과, 말풍선 도움말이 있어 전체적으로 이용하기 어렵지 않음에도 오류가 발생한 데이터가 무엇인지 확인하는 작업은 쉽게 구상이 되지 않네요. 다행히 MS가 제공하는 친절한 자료가 있습니다.

SSIS 자습서: 간단한 ETL 패키지 만들기 > 5단원: 오류 흐름 리디렉션 추가
http://msdn.microsoft.com/ko-kr/library/ms169917.aspx
http://msdn.microsoft.com/ko-kr/library/ms166569.aspx

1) 스크립트 구성 요소를 추가해서 오류 발생을 의미하는 붉은 선을 연결하고, 각각의 원본과 대상에서 오류 발생시 행 리디렉션을 선택합니다.
2) 그리고 스크립트 구성 요소 안에서는 ErrorDescription의 출력 열을 추가하고, 스크립트 편집기를 열어 Input0_ProcessInputRow 메서드에 다음의 명령을 추가합니다.

 

[VB] Row.ErrorDescription = Me.ComponentMetaData.GetErrorDescription(Row.ErrorCode)
[C#] Row.ErrorDescription = this.ComponentMetaData.GetErrorDescription(Row.ErrorCode);

3) 마지막으로 오류가 발생한 행을 저장할 플랫 파일 대상을 연결해서 적절한 이름과 파일 경로를 설정하면 됩니다.

그럼 다음과 같은 결과를 보실 수 있습니다. 화면은 Number 타입에 문자열이 들어 있는 원본 오류과, PK 중복 오류가 발생하는 대상 오류를 샘플링한 결과입니다.

 

추가 URL>
Capturing and Logging Data Load Errors for an SSIS Package
http://www.mssqltips.com/sqlservertip/2149/capturing-and-logging-data-load-errors-for-an-ssis-package/
좀 더 복잡하지만, DB를 이용해 오류가 발생한 데이터를 ErrorLog 테이블에 저장하는 방법입니다.

SSIS 오류 및 이벤트 참조
http://msdn.microsoft.com/ko-kr/library/ms345164.aspx
반응형