2011-08-16 5 views
2

한 데이터베이스에서 다른 데이터베이스로 기본 파일 덤프를 쓰고 있습니다. 저는 SSIS 2008을 사용하고 있으며 MSSQL 2010 데이터베이스의 데이터를 MYSQL 5.1 데이터베이스로 변환하기위한 여러 패키지를 만듭니다.SSIS 패키지의 임시 테이블 사용

모든 연결이 설정되어 있고 두 데이터베이스간에 레코드를 전송할 수 있지만 변환 프로세스에서 임시 테이블을 사용하고 임시 테이블을 데이터 흐름 작업의 MSSQL 원본으로 사용하여 MYSQL 테이블을 기다리고 있습니다.

저는 이것을 설정하는 데 문제가 있습니다. OLEDB 연결을 사용하고 RetainSameConnection 속성과 DelayValidation 속성을 true로 설정했습니다. 원본 그림을 MSSQL 데이터베이스에서 원본으로 설정하면 제어 흐름에서 이전 작업에서 만든 임시 테이블을 찾을 수 없습니다. 이 두 작업에 동일한 연결 관리자를 사용하고 있습니다.

누구나 아이디어 나 경험이 있습니까? 하나 개의 작업을 수행하는 간단한 예를 들어

..
SELECT * 
INTO #TMP 
FROM CUSTOMERS 

(이것은 간단한 예이고, 난 그냥 그렇게 나와 함께 곰 Customers 테이블을 사용할 수 있습니다이 경우 relize) 가 사용 가능 소스 테이블로 데이터 흐름 작업 에서이 임시 테이블?

+1

SSIS는 사용자가 설정 한 작업 및 데이터 흐름에서 스키마를 바인딩하려고하기 때문에 임시 테이블을 사용하는 데 특히주의를 기울입니다. 해결책이 있다면 찾지 못했습니다. 우리는 SSIS 스키마를 사용하여 준비 테이블 등을 잡고이를 해결합니다. – Yuck

+0

이 작업의 세부 사항을 상세히 설명하는 솔루션을 추가 할 수 있습니까? – JBone

답변

1

내 의견에 언급했듯이 해결 방법이 많지 않고 해결 방법이 많습니다. SSIS는 결과 집합의 모양을 사용하여 작업의 속성을 바인딩합니다. 데이터베이스에서 항상 임시 테이블을 사용할 수있는 것은 아니므로 DelayValidationtrue으로 설정해도 SSIS에서 오류가 발생할 수 있습니다.

내 솔루션은 연결하려는 데이터베이스에 SSIS 스키마를 만드는 것입니다. SSIS 패키지 (주로 준비 테이블) 내에서만 사용되는 개체의 보안 및 명확한 분리가 그 이유입니다.

dbo 스키마에 테이블을 던지는 대신 (어쨌든 부끄럽지 않아야 함) SSIS 스키마에서 테이블을 생성 할 수 있습니다. 일반적인 데이터 흐름은 시작될 때 테이블을 잘라내어 값을로드하고 필요한 모든 작업을 수행하며, 완료되면 선택적으로 잘라 버릴 수 있습니다. 테이블을 항상 사용할 수있는 한 SSIS는 결과 집합의 모양을 검사 할 수 있습니다.

+0

+1 데이터를 처리하는 데 좋은 ETL 연습. – HardCode

0

선택 항목의 열을 인식하지 못하기 때문에 임시 테이블을 소스로 사용해서는 안됩니다. 대신 테이블 변수 또는 CTE를 사용하십시오.

+0

테이블 변수 또는 CTE가 선언되면 선택할 테이블로 표시됩니까? – JBone

+0

@JBone, 거기에 조인을 선택하면 원본 데이터로 인식되는 SSIS가 없습니다. – HLGEM