2012-11-20 2 views
1

이 오류는 이전에 본 적이 있지만 값을 수동으로 입력하여 처리 한 것이지만 4 행이었습니다.이 오류는 이번에는 100 개가 넘는 행에서 발생합니다.SSIS - 열에 null 값을 삽입 할 수 없습니다.

Shipto이라는이 열은 3 개의 숫자 중 하나, 1 자리 숫자, 2 자리 숫자 또는 All이라는 단어를 갖습니다. 수입 1 개 2 자리 숫자에 완벽하게 잘 작동하지만 All을 가지고 때이 오류가 발생합니다

[SSIS.Pipeline] Error: SSIS Error Code DTS_E_PROCESSINPUTFAILED. The ProcessInput method on component "OLE DB Destination" (162) failed with error code 0xC0202009 while processing input "OLE DB Destination Input" (175). The identified component returned an error from the ProcessInput method. The error is specific to the component, but the error is fatal and will cause the Data Flow task to stop running. There may be error messages posted before this with more information about the failure.

이 패키지는 하나 개의 테이블에서 값을 받아서 다른에 삽입합니다. 값을 가져 오는 표를 보았습니다. 열 shipto은 null이 아닙니다.

유일한 차이점은 두 테이블의 구조에 있습니다. 임시 테이블은 실제 테이블이없는 해당 컬럼에서 널 (null)을 허용합니다. 두 테이블의 열은 varchar(20)입니다.

이 데이터 흐름에는 []이라는 체크 박스가 있습니다. 이 문제를 해결하지 않으시겠습니까? 열이 null이 아니기 때문입니다.

도움을 주셔서 감사 드리며 필요한 추가 정보를 게시하겠습니다. 고맙습니다.

+1

"실패에 대한 추가 정보가있는이 메시지 앞에는 오류 메시지가있을 수 있습니다."다른 메시지가 있습니까? 일반적으로 존재합니다. 필자가 보았던 대부분의 문제는 일반적으로 데이터 형식이 일치하지 않는 것과 관련이 있습니다. – Samuel

+1

공유 한 오류 메시지에서 문제가 null 값으로 언급되는 부분이 표시되지 않습니다. 대상 테이블에서 Null을 허용하지 않으면 ETL 패키지에서 검사 제약 조건의 선택을 취소해도 문제가 해결되지 않습니다. 소스 데이터의 모든 행에 대해 해당 열에 Null 값이없는 것이 확실합니다. –

+0

@ Samuel 다른 오류는 없습니다. 데이터 유형은 동일하므로 왜이 부분을 혼동합니다. –

답변

5

은 몇 가지 가능성이 있습니다

  1. 이 소스 테이블에 널 (null)이있다. 목표 테이블은 해당 컬럼에 널 값을 허용하지 않습니다. 몇 가지 옵션이 있습니다. 테이블에서 직접 데이터 소스를 사용하는 경우 대신 SQL 명령을 사용하고 쿼리에서 null을 처리하십시오.

    SELECT field1, field2, isnull (shipto, '') field3, field4, ... FROM 표

    위의 빈 문자열에서 원하는 값을 사용하여 널 값을보다 수용 가능한 값으로 바꿀 수 있습니다.

    이 작업을 수행하지 않으려면 대상 데이터베이스에 null을 허용하거나 원본 데이터베이스 테이블에 null이있는 이유를 확인하고 더 이상 발생하지 않도록해야합니다.

  2. 필드의 매핑이 해제됩니다. 원본에 대상 필드에 매핑되지 않은 값이 있습니다.

  3. 원본과 대상 간의 다른 변환은 NULL 값을 도입합니다.

+0

도움 주셔서 감사합니다! 정말 감사. –

+3

이 세 가지 답변 중 어떤 답이 당신에게 도움이 되었습니까? 감사! –

관련 문제