Informix IDS 11.7에서 실행되는 ERP 시스템에서 SQL 서버 (2012)로 데이터를 가져 오기위한 패키지 패키지를 만드는 중입니다.SSIS 데이터 소스 데이터 유형
이 데이터를 가져 오기 위해 SSIS를 사용하여 문제가 발생했습니다. ODBC 연결 및 ADO.NET 데이터 원본을 사용하거나 OLEDB 연결 및 공급자를 사용하여 두 가지 방법으로 데이터에 액세스 할 수 있습니다.
ODBC를 사용하면 (자연스럽게!) ODBC가 약 3 배 더 느려지므로 당연히 필자는이 문제를 해결하려고 노력하고 있습니다.
그러나 문제는 OLEDB를 사용할 때 데이터 원본이 잘못된 데이터 형식을보고한다는 것입니다.
서버의 NVARCHAR 데이터 형식이 SSIS에 VARCHAR (DT_STR)로보고되고 있습니다. 이로 인해 들어오는 유니 코드 데이터로 데이터를 가져올 때 패키지가 실패하게됩니다. 여기서 데이터 변환을 할 수있는 기회가 없으며 데이터가 데이터 소스 구성 요소에 부딪 힐 때 패키지가 실패합니다. 이러한 오류를 무시하도록 구성 요소를 설정할 수 있지만 오류없이 실행되지만 누락 된 데이터는 전혀 수용 할 수 없습니다.
setnet32에서 DB_LOCALE 및 CLIENT_LOCAL 설정을 시도했지만 아무런 효과가 없습니다.
OLEDB 데이터 소스를 만들면 기본 코드 페이지를 찾을 수 없다는 오류가 발생하므로 해당 경고가 사라지도록 "AlwyasUseDefaultCodePage"속성을 true로 설정해야하지만 기본 코드는 설정해야합니다 페이지가 실제로 코드의 페이지를 65001과 같은 것으로 설정하더라도이 데이터를 실제로 VARCHAR로 가져 오려고 시도하는 것입니다.
그래서 제 질문은 어떻게하면 OLEDB를 얻을 수 있습니까? 드라이버가 Informix에서 올바르게 작동하는지 또는이 데이터가 DT_STR이 아니라 실제로 DT_WSTR이라고 SSIS를 설정/설정 하시겠습니까?
감사합니다.
그래서 올바른 데이터 형식을보고하는 OLEDB 공급자를 얻을 수있었습니다 SSIS.'RSASWS = TRUE;'를 추가해야합니다. 연결 문자열에 연결하지만 연결 속성으로 노출되지 않으므로 연결을 식 또는 매개 변수로 설정해야 연결이 항상 올바를 수 있습니다. – Cameron
그건 불행히도 문제를 해결하지 못합니다. 이제 DT_WSTR의 올바른 데이터 유형을보고하는 열이 표시되지만 구성 요소는 여전히 "데이터 손실로 인해 값을 변환 할 수 없습니다."오류를 반환합니다. 여기서 무엇을해야할지 모르겠다. 여기에서 일어날 수있는 데이터 변환이 없다. 그것은 유니 코드 문자열이다. 데이터 원본에서 오류가 발생하기 때문에 문제를 해결하기 위해 데이터 변환 작업을 삽입 할 기회조차 없습니다. – Cameron
좋아, 알아 냈어. 또한 UNICODE = TRUE 매개 변수를 설정해야합니다. 위와 같이 연결 문자열에 추가하십시오. 따라서 연결 문자열의 매개 변수는 인포믹스를 SSIS, 유니 코드 문제로 분류해야합니다. OLEDB를 사용하는 것이 좋습니다. – Cameron