파일에 저장된 쿼리를 데이터 원본에서 사용하기
한대성
MS SQL Server MVP
에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자
![]() |
데이터 원본에서 테이블 보다는 쿼리를 이용해 패키지 개발을 하는게 편리한데요,
이 쿼리를 패키지 내에 두지 않고 따로 파일로서 관리 할 수 있는 방법이 있을까요?
|
제어 흐름의 SQL 실행 작업에는 파일에 저장된 쿼리를 직접 읽어와서 실행시킬 수 있지만, 데이터 흐름 내의 OLE DB 원본 등에서는 이러한 기능이 없습니다.
이를 구현하기 위해서는 다음과 같은 방식으로 대신할 수 있지 않을까 합니다.
[단계 1] 파일 연결(기존 파일)로 지정된 파일의 내용을 변수에 저장 [단계 2] 이 변수를 이용하여 데이터 흐름의 원본에서 사용 |
다음과 같이 간단한 SQL 문이 포함된 파일을 만든 후, 이를 지정하는 파일 연결(기존 파일)을 설정합니다. 본 예제에서는 SQLSource라고 하겠습니다.
이제 쿼리를 실행할 DB 연결을 설정한 후, 다음과 같이 String 형 변수를 하나 추가합니다.
값 부분은 변경되겠지만, 우선 패키지를 작성하기 위해서는 기본값을 입력해 줘야 합니다.
제어 흐름 영역에 스크립트 작업을 하나 추가한 후, ReadWriteVariables에 위에서 추가한 변수를 설정합니다.
스크립트 디자인(S) 버튼을 클릭하여 VSA를 연 후, 다음과 같은 스크립트를 입력합니다.
Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Runtime Imports System.IO
Public Class ScriptMain Public Sub Main()
'파일 연결로부터 파일 위치를 획득 Dim filename As String = Dts.Connections("SourceSQL").ConnectionString Dim queryFile As StreamReader
queryFile = File.OpenText(filename)
'파일 내의 내용을 SourceSQL1 변수에 저장 Dts.Variables("SourceSQL1").Value = queryFile.ReadToEnd() queryFile.Close()
Dts.TaskResult = Dts.Results.Success End Sub
End Class
|
이제 데이터 흐름 작업을 추가한 후 스크립트 작업과 연결하고선 데이터 흐름 영역 내에 OLE DB 원본을 추가합니다.
데이터 액세스 모드를 변수를 사용한 SQL 명령으로 선택하고, 변수 이름을 위에서 지정한 SourceSQL1 변수로 변경합니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
데이터 필터링 구현 (0) | 2011.08.27 |
---|---|
스크립트 구성 요소를 이용한 원본, 변환 구현하기 (0) | 2011.08.27 |
Foreach 루프 컨테이너를 이용한 패키지 반복 실행 (0) | 2011.08.27 |
패키지 외부에서 데이터 원본 및 대상 설정하기 (0) | 2011.08.27 |
루핑 처리 방법 (0) | 2011.08.27 |