자식 패키지의 연결 정보 변경하기
한대성
MS SQL Server MVP
에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자
![]() |
Connection Managers 에 관련한 질문인에요. |
우선, 다음과 같이 자식 패키지를 간단히 만들겠습니다.
1. 테스트 확인을 위한 용도로 이용할 ServerName 이라는 문자열 변수를 추가합니다.
2. 연결 관리자에서 OLE DB 연결을 추가한 후, 이 연결의 이름을 DBConn 이라고 변경합니다.
3. 제어 흐름 영역에 SQL 실행 작업을 추가한 후, 다음과 같은 간단한 쿼리를 입력합니다.
SELECT @@ServerName AS ServerName
4. SQL 실행 작업 편집기에서 ResultSet 속성을 단일 행으로 변경하고, 결과 집합 탭에 다음과 같이 결과를 SSIS 변수로 받아오는 설정을 합니다.
5. 이제 스크립트 작업을 추가한 후, SQL 실행 작업과 연결하고 ReadOnlyVariables 속성에 ServerName 이라는 변수를 추가합니다.
6. VSA(Visual Studio for Application)을 열어서 다음과 같은 간단한 스크립트를 입력합니다.
Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime
Public Class ScriptMain
Public Sub Main()
MsgBox(Dts.Variables("ServerName").Value.ToString)
Dts.TaskResult = Dts.Results.Success End Sub
End Class |
완성되었으면 패키지를 실행해서 출력 결과를 확인해 봅시다.
이제부터 부모로부터 연결 정보를 받아오는 부분을 설정합시다.
Visual Studio의 상단에 있는 메뉴 중 SSIS(S) à 패키지 구성(C) 를 선택해서 구성 설정 창을 엽니다.
패키지 구성 설정(E)을 체크하고선 추가(A)를 클릭한 후, 다음과 같이 구성 유형을 부모 패키지 변수로 설정하고 부모 변수(P) 부분에 부모 패키지의 변수 명을 설정합니다. 본 예제에서는 간단히 DBConn 이라 설정하겠습니다.
이제 다음(N)을 눌러 부모 변수로부터 넘겨받은 값을 지정할 속성을 설정하도록 합니다. 어디에 설정하면 될까요?
아래와 같이 DBConn 연결의 ConnectionString에 적용되도록 합니다.
다음(N)을 눌러 이 구성에 대한 이름을 적절히 지정해주고선 구성 설정 작업을 완료합니다.
이제, 부모 패키지를 만들어봅시다.
빈 패키지를 추가한 후, 자식에게 넘겨줄 변수인 DBConn 이라는 문자형 변수를 추가합니다.
이 변수에 여러 값을 넘기도록 설정을 하겠습니다. Foreach 루프 컨테이너의 여러 열거자(Enumerator) 유형을 이용해서 구현할 수 있겠지요. 본 예제에서는 Foreach 루프 컨테이너의 Item 열거자(Enumerator)를 이용해서 간단히 직접 서버 정보를 입력하는 형태로 구성하도록 하겠습니다. 제어 흐름 영역에 Foreach 루프 컨테이너를 하나 추가한 후, 다음과 같이 설정합니다.
변수 매핑 탭에서 이 열거 값들을 저장할 변수를 설정해 줍니다.
확인을 눌러 편집기를 닫은 후, Forach 루프 컨테이너 내에 패키지 실행 작업을 추가하고 위에서 만든 자식 패키지를 실행하도록 설정합니다.
실행해 봅시다!!
(첫 번째 루프)
(두 번째 루프)
(세 번째 루프)
본 예제에서는 DB 서버의 연결 전체를 변경하도록 설정하였습니다. 만약 DB 서버는 동일한데 DB 명만 다르다면 구성(Configuration) 설정에서 ConnectionString 속성 대신 InitialCatalog를 변경하도록 설정하면 됩니다.
|
||||
|
||||
|
||||
|
'연구개발 > DTS & SSIS' 카테고리의 다른 글
FOR 루프 컨테이너를 이용한 무한 루프 구현하기 (0) | 2011.08.27 |
---|---|
패키지 내의 연결 정보 읽어오기 (0) | 2011.08.27 |
스크립트 변환에서 오류 처리하기 (0) | 2011.08.27 |
[DTS] 데이터 로딩 과정에서 필터링 하기 (0) | 2011.08.27 |
동일한 구조의 테이블로 결과 보내기 (0) | 2011.08.27 |