2010-02-05 2 views
2

SSIS 패키지에서 소스로 사용하려는 다소 복잡한 쿼리가 있습니다. 내 OLE DB 원본을 만들고 SQL로 액세스 모드를 지정하고 명령 텍스트 상자에 내 쿼리를 붙여 넣습니다. 미리보기를 클릭하면 샘플 데이터가 다시 나타나며 모든 것이 잘 보입니다.SSIS에서 소스로 Oracle 쿼리가 잘못된 데이터 형식을 정의합니다.

그러나 패키지를 실행하려고하면 "외부 열이 데이터 원본 열과 동기화되지 않았습니다."라는 오류 메시지가 표시되고 외부 열에서 xxx '외부 열을 제거해야합니다. "라는 오류 메시지가 나타납니다. 디자인 모드에서는 오류 목록 탭에 항목이 없습니다.

내 연구를하는 중 잘못된 데이터 유형으로 외부, 출력 및 오류 열이 자동으로 정의되는 것을 확인했습니다. 일부 명백한 정수 열은 문자열로 정의되고 다른 열은 유니 코드 문자열로 설정됩니다.

고급 편집기를 통해 수동으로 수정하려고했지만 오류 열을 변경할 수없는 것으로 보입니다. 그러나 외부 및 출력 원본 열을 수정하면 동기화가되지 않는다는 메시지가 나타납니다. 해결하겠습니까? 예를 클릭하면 문자열로 되돌립니다.

어떤 통찰력에도 감사드립니다.

답변

2

문제는 여러 가지 방법 중 하나를 통해 해결할 수 있습니다.

우선 고급 편집기를 사용하여 변경하려는 경우 (관리자가 수행 한 내용을 관리자가보기 어렵 기 때문에 권장), 외부 및 출력 원본 열의 설정을 변경해야합니다 동기화. '고정'이란 무엇입니까? 예를 클릭하면이 두 파일의 불일치가 나타납니다.

둘째, 문자열로 모두 남겨두고 데이터 변환 구성 요소를 사용하여 필요한 유형으로 변환 할 수 있습니다. 이것은 미래의 관리자에게 더 쉽습니다.

필자는 SSIS가 올바른 유형의 필드를 생성 할 수 있도록 pl/sql에서 필요한 유형을 설정하는 oracle sql 문을 사용하는 것을 선호합니다. 이렇게하면 정의가 명확 해 지므로 관리자가 수행 한 작업을 볼 수 있습니다. 이를 위해 SQL 쿼리를 사용하여 대상 테이블의 구조에서 select or select 문을 작성합니다 (이 프로젝트를 빌드 한 후에 변형이 적용되기 전에 모든 데이터/구조가 Oracle에서 스테이징 SQL Server 시스템으로 그대로 유지됩니다). .)
https://docs.google.com/leaf?id=0B4aVrSS2ke2IZGVkYWJkOWYtY2Y3Yy00MDI5LTkyMDctYjgwMGY2YzZiODRm&hl=en

+0

외부 열과 출력 열의 데이터 형식이 변경되었습니다. 그리고 난 여전히 불일치 수정 프롬프트가 나타납니다. 어쩌면 내가 뭔가 놓친 것 같은데 .. 다시 보일거야. 에디터가 에러 열 속성을 허용하지 않기 때문에 오류 열 속성을 어떻게 변경합니까? 패키지를 자동 생성 유형으로 실행하지 않으므로이를 문자열로 남겨 두는 것은 답이 아닙니다. – Jason

+0

Oracle Select Builder를 살펴 보았습니다. SQL Server 측에서 실행합니까? 내가 Oracle 소스 구성 요소에 대한 결과 SELECT 문을 사용하여 다음 스크립트 구성 요소 (또는 식 변수) 및 런타임 문을 설정할 변수를 사용하는 것 같아요. – Jason

+0

오류 열의 유형을 변경 한 적이 없습니다. 오류 열은 ssis에 의해 생성되며 데이터 이동의 일부가 아닙니다. 나는 다시보고 내가 그렇게했을 때 내가 바꾼 것들을 확인하게 될 것이다. 그래도 고급 편집기에서 변경하는 것은 좋지 않습니다. 오라클 셀렉트 빌더 오라클에서 가져온 각각의 테이블에 대해 OLEDB 소스 컴포넌트에 사용할 SQL 문을 생성하기 위해 SQL 측에서 실행되었습니다. sql 문은 로컬 sql 테이블에 대한 테이블 구조를 읽고 올바른 형식으로 데이터를 가져 오도록 oracle에 대해 pl/sql을 생성합니다. –

관련 문제