2017-01-05 3 views
0

현재 여러 가지 가능한 데이터 흐름을 실행하는 패키지가 있습니다. 실패한 행을 로그 파일 및 데이터 테이블로 리디렉션했습니다. 그건 잘된거야.SSIS에서 각 행에 대해보다 구체적인 오류를 얻는 방법

그러나 행당 매우 구체적인 오류가 발생하지 않습니다. 나는 이미 "Openrowset"으로 입력 메소드를 변경하여 행 단위로 진행합니다.

내가 오류는

는 "데이터 값이 무결성 제약 조건을 위반"입니다.

우리 팀은 아래 오류와 같은 오류가 발생했는지 알아야합니다.

"11.0"HRESULT : 0x80040E2F 설명 :.. "UNIQUE KEY 제약 'RAW_Primary_key_UK'의 위반이 중복 키 값이 'dbo.temp_table' 개체에 중복 키를 삽입 할 수 없습니다 (XYZ, 123, 123) . "

모든 행에 대해 해당 행과 연결된 데이터가 필요합니다. 나는 이벤트 핸들러를 시도하고있다. 그건 내가 실패한 행에서 데이터를 얻을 수 없으며 구성 요소에 실패합니다 (그리고로드를 유지해야합니다). 그러나, 내가 찾고있는 오류 메시지를받습니다.

오류에 대해 리디렉션 행과 이벤트 처리기를 모두 설정할 수없는 것 같습니다.

그래서 특정 제약 조건 오류를 위반하는 방법과 데이터를 위반하는 방법에 대해 궁금합니다.

다시 말하지만, 일반적인 "You violated a constraint"가 아닙니다.

답변

0

유일한 제약 조건이있는 열에 중복 행을 삽입하려고 시도하는 오류 메시지가 매우 분명합니다. 즉, 사용자의 경우 temp_table의 기본 키입니다. 따라서 데이터 소스에서 중복 값을 제거하십시오.

업데이트 : 당신이 확실 들어오는 데이터 소스를 만들 수없는 경우, 거기에 중복 여부, Execute SQL Task을 추가하고 테이블이 이미 IF NOT EXISTS(SELECT 1 FROM table where...)를 사용하여 삽입하고자하는 데이터를 갖고 있는지 여부를 확인 존재 여부를

계속 진행할지 여부를 제어하는 ​​변수에 single row 결과를 할당합니다.

+0

오래 보내 주셔서 감사합니다. 그러나 오류를 유발할 수있는 다른 제한 사항이 있습니다. FK와 같은, 실제로 그것은 유일한 다른 오류입니다. 나는 "Not null"오류를 돌봐 줬어. 중복 된 이유는 여러 데이터 소스가있어 동일한 데이터를 제공하기 때문입니다.우리는 그것을 가져 와서 원시 -> 스테이징 -> 데이터웨어 하우스 테이블에 넣습니다. 이 프로세스를 통해 중복 된 데이터가 없는지 확인합니다. 그러나 데이터의 출처를 제어하지는 않습니다. – blk

+0

업데이트 된 답변 확인 – LONG

0

오류 행을 다시 지정하면 ErrorColumn + ErrorCode라는 두 개의 새 열이 표시됩니다.

오류 코드는 정적 &입니다. - (모든 표준 오류 코드가 있습니다) ErrorColumn은 데이터 흐름에서 열의 계보 ID와 관련이 있습니다. 행 당 1 개 이상의 오류 (예를 들어 2 개의 별도 NOT NULL COLS)이있는 경우 - -

참고 만 문제 해결에 매우 유용 할 수있는 최초의 1

이 얻을.

+0

john mcTighe! 슬프게도 이미 그렇게했습니다. 이전 프로세스에서 SQLloader를 사용하고 있으며 동일한 오류 수준을 원했습니다. 위의 방법을 사용하면 코드를 변환해도 일반 오류 만 발생합니다. 스크립트 구성 요소를 사용하여 사용자 지정 대상을 빌드하고 직접 오류를 잡아야했습니다. SSIS는 원래 오류를 거의 버립니다. – blk