2016-12-12 2 views
1

우리는 동일한 데이터베이스의 여러 인스턴스를 포함하는 DB 서버를 가지고 있습니다. 모든 데이터베이스가 열거됩니다 (예 : MyDB001 - MyDB006). 모든 인스턴스에는 동일한 테이블이 있습니다.소스 테이블을 통한 SSIS 루핑

보고 목적으로이 모든 DB를 단일 DB에 추출하고 싶습니다.

현재 해결책은 SSIS에 여러 연결을 설정하는 것입니다. 각 DB마다 하나의 전용 연결이 필요합니다. 또한 DB 당 테이블을 추출하기위한 데이터 흐름이 있습니다. 이렇게하면 추출을 변경해야하는 경우 여러 데이터 흐름이 변경됩니다.

데이터베이스를 순환시키는 현명한 방법이 있습니까? 예 : 매개 변수를 사용하여 DB에 연결 한 다음 데이터를 얻기 위해이 매개 변수화 된 연결을 사용하여 하나의 데이터 흐름을 유지 하시겠습니까?

미리 알려 주셔서 감사합니다.

SillyWalker

답변

0

예 할 수 있습니다. 출발지와 목적지가있는 데이터 흐름으로 시작합니다. 제어 흐름, 속성, 보호 수준을 변경하여 민감한 내용을 저장하지 않으려면 백그라운드를 클릭하십시오.

소스 연결, 속성을 클릭하고 연결 문자열을 복사하여 텍스트 편집기에 붙여 넣습니다. 여전히 속성, 표현식을 클릭하고 ... 다음 속성 식 드롭 다운 상자에서 속성 식 드롭 상자에서 연결 문자열을 선택하고 연결 문자열을 정의하고 원하는 데이터베이스를 가리키면 연결 문자열 텍스트 편집기에 일찍 저장하고 이에 따라 수정합니다. 원하는 데이터베이스로 변경하십시오.

위의 의미를 이해하고 모든 소스 테이블을 가리 키도록 연결 문자열 표현식을 변경할 수있을 때까지이 파일을 사용하십시오. 이것을 이해하고 나면 루프 부분을 시작할 수 있습니다. 두 개의 변수를 추가하십시오. 하나는 cs (유형 문자열)이고, 이것은 동적 데이터베이스 연결 문자열이 될 것이며, 두 번째 변수는 rs (유형 오브젝트)입니다. 이것은 데이터베이스 연결 모음을 보유합니다. 제어 흐름에서 execute sql 작업, foreach 루프 컨테이너, connect SQL 작업을 컨테이너에 추가하고 데이터 흐름을 컨테이너로 끌어다 놓습니다. 실행 SQL 작업을 엽니 다 일반 탭에서 sqlstatement, 데이터베이스 연결 모음을 정의하십시오 : select val from tabl (tal은 모든 데이터베이스 연결을 열 VAL에 저장합니다). 결과 세트에서 전체 결과 세트를 선택하십시오. 결과 집합 탭에서 결과 이름을 0으로 변경하고 변수를 rs로 변경하십시오. 그러면 데이터베이스 연결 문자열 컬렉션이 변수 rs에 매핑됩니다.

다음으로 foreach 루프 컨테이너를 두 번 클릭하여 편집하십시오. 컬렉션 탭에서 Foreach ADO 열거자를 선택하고 ADO 개체 원본 변수에서 변수 rs.In 변수 매핑 탭을 선택하고 변수에서 cs를 선택하고 인덱스는 0이어야합니다.

이제 데이터 흐름에서 원본 연결을 클릭하고, in 식에서 연결 문자열을 변수 cs로 설정합니다. 테스트하고 재미있게 보내십시오.

전체 사진 :

enter image description here