정보, 통신, 기술/BI와 DB
SSIS에서 오류가 발생한 데이터 로그에 쌓기
최윤호
2011. 11. 24. 23:13
상당히 직관적인 이름과, 말풍선 도움말이 있어 전체적으로 이용하기 어렵지 않음에도 오류가 발생한 데이터가 무엇인지 확인하는 작업은 쉽게 구상이 되지 않네요. 다행히 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);
[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