2011-12-19 2 views
4

ASCII 플랫 파일 원본에서 데이터를 읽고 SQL Server 2008 데이터베이스에 쓰는 SSIS 2008 패키지를 만듭니다. BIDS는 유니 코드 데이터 유형과 비 유니 코드 데이터 유형 간의 암시 적 캐스트에 대해 불평하고 있었기 때문에 파생 된 열 도구를 사용하여 캐스팅을 만들었습니다.SSIS가 DT_WSTR로 캐스팅되지 않았거나 캐스팅되지 않았습니다.

Derived Column Name | Derived Column | Expression   | Data Type 
AccountName2   | Replace 'AName' | (DT_WSTR,100) AName | string [DT_STR] 

나는 여전히 같은 오류를 받고 있어요 : 이것은 모습입니다

Validation error. InsertAccountRecords: InsertAccountRecords: Columns "AccountName2" and "AName" cannot convert between unicode and non-unicode string data types. 
오류가 문제가 믿고 나를 인도하는 SQL Server 대상,에 표시됩니다

파생 열의 데이터 형식. DT_STR에서 DT_WSTR로 캐스팅했는데 Data Type이 여전히 명목상 DT_STR입니다.

저는 인터넷으로 인터넷을 검색했으며이 질문에 대한 좋은 답변을 찾을 수 없습니다. 누구든지 어떤 지침을 제공 할 수 있습니까?

편집 : 예. 파생 열의 데이터 뷰어 다운 스트림을 보면 AccountName2는 여전히 DT_STR로 올라오고 있습니다. 캐스트 주조가 왜 아닌가요?

답변

8

documentation은 새 열을 추가 할 때만 새 데이터 형식이 올바르게 설정됩니다. 파생 열 드롭 다운에서 "새 열로 추가"를 선택해야합니다.

데이터 변환 변환을 사용하십시오. 데이터 유형을 변경하는 것이 유일한 변환 일 경우 더 쉽습니다.

+0

예. 100 %의 경우 였고 데이터 변환 변환을 추가하면 훨씬 간단 해졌습니다. – Chris

+0

그래도 왜, 왜, 왜, 왜 궁금해합니다.? 대체 할 때 데이터 유형을 올바르게 설정하지 않기로 선택해야하는 이유는 무엇입니까? – igorludi

+0

@igorludi 잘 모르겠지만 SSIS는 데이터 유형을 처리하는 데 매우 보수적입니다. 암시 적 변환은 허용되지 않습니다. 그래서 내 생각 엔 단일 열이 패키지의 다른 위치에서 다른 데이터 유형을 가질 수 없다는 디자인 결정이 내려진 것입니다. 누군가가 새로운 데이터 형식 변환을 추가하고 '다운 스트림'논리를 업데이트하지 않기 때문에 갑자기 패키지가 손상되는 문제를 피할 수 있습니다. 새 열을 사용하면 전체 패키지를 업데이트해야합니다. 또한 계보 분석과 같은 일부 메타 데이터 작업을 더 쉽게 만들 수 있습니다. 그러나 나는이 추측에 대한 증거가 없다. – Pondlife

관련 문제