2011-10-26 4 views
5

SSIS 프로젝트의 중간 단계에서 특정 테이블 필드가 char(30)에서 nvarchar(30)로 변경되었습니다.SSIS가 OLEDB 커넥터로 잘못된 열 유형을 얻음

그러나 SSIS 패키지를 실행하면 cannot convert from unicode to non-unicode라는 오류가 나타납니다. 데이터베이스 원본에서 대상으로 직접 데이터를 전송하려고합니다.

두 연결 모두 동일한 데이터베이스 스키마를 사용하므로 변환이 없어야합니다.

외부 컬럼 데이터 유형을 점검 할 때 D_STR이 표시되며 더 이상 그렇지 않습니다.

나는 모든 종류의 캐시 된 데이터를 정리할 수 있기를 희망하면서 원본과 대상을 모두 삭제하려고했지만 작동하지 않았습니다.

어떤 아이디어?

답변

16

데이터 흐름 작업의 메타 데이터처럼 저에게 들리는 소리가 캐시되어 새로운 유형을 반영하여 새로 고쳐야합니다.

소스를 열고 열로 이동 한 다음 열의 선택을 취소 한 다음 열을 확인하십시오. 확인을 클릭하십시오. 이제 메타 데이터가 새로 고쳐 져야합니다.

+0

그랬습니다. 흐름에서 캐시 된 메타 데이터를 다시 설정할 수있는 방법을 찾지 못했지만 트릭을 만들었습니다. 대상에서 매핑을 다시 만들어야하기 때문에 그렇게해야하는 것은 매우 어렵습니다. S – cfrag

+1

각 열을 데이터가 통과 할 파이프로 생각하십시오. 디자인 타임에, 당신은 30 바이트를 통과시킬 수있는 파이프가 필요하다고 ssis에게 말했습니다. 그런 다음 런타임에 30 바이트 파이프를 통해 60 바이트를 채우려고했습니다. 열의 체크를 해제하고 다시 확인하면 ssis에서 데이터를 검토하고 30을 60 바이트 파이프로 바꿉니다. – brian

+3

메타 데이터의 필요성을 이해합니다. 내가 이해하지 못하는 것은 "크기 조정"을 강요하는 "열 메타 데이터 새로 고침"버튼이 없다는 것입니다. 대신 전체 배관을 다시해야합니다. – cfrag

1

nvarchar 및 nchar은 유니 코드입니다. 반대로 varchar와 char은 unicode가 아닙니다. 당신은 추가적인 변형 (CAST 또는 CONVERT)을 수행해야 할 다른 하나 개의 데이터 유형에서 데이터를 이동하는 경우 그 결과

http://msdn.microsoft.com/en-us/library/ms187752.aspx

. 다른 옵션은 숯불 DT-STR의 SSIS 데이터 형식을 사용하고 NVARCHAR 내가 훨씬 더 구체적으로 할 수없는 당신의 패키지가 작동하는 방법을 모른 채 SSIS 데이터 형식 DT-WSTR

http://msdn.microsoft.com/en-us/library/ms141036.aspx

를 사용하도록하여 어댑터를 살펴 보는 것입니다 그러나 잘하면 이것은 당신을 가게 할 것입니다.

+0

데이터를 변환하지 못했습니다. 이 패키지는 두 테이블 모두에서 정확히 동일한 열을 가진 간단한 "테이블 A에서 테이블 B로 전송"했습니다. 무슨 일이 있었는지, 특정 시점에서 두 테이블 모두 특정 열을 변경했지만 SSIS는이를 인식하지 못했습니다. – cfrag

관련 문제