프로젝트 때문에 글을 많이 올리지 못했네요.
Q&A에 오순근 님이 ODBC를 이용한 데이터 원본에 대해 질문해 주셔서 이에 대한 방법을 설명하겠습니다.
SQL 2005 SSIS에서는 ODBC를 이용하여 SQL 명령은 실행할 수 있습니다.
하지만, 데이터 흐름 영역에서는 ODBC 데이터 원본 또는 ODBC 데이터 대상이 없습니다.
(수정 : 2007.01.26 : DataReader 원본에서 .NET 공급자\Odbc Data Provider를 이용하여 ODBC 원본을 사용할 수는 있습니다.)
이를 구현하기 위해서는 스크립트 구성요소의 원본 기능을 이용해야 합니다.
다음과 같이 구현하는 예를 설명하겠습니다.
SQL Server 2000에 대한 ODBC 연결을 이용하여
SELECT au_id, au_lname FROM pubs.dbo.authors
라는 입력 쿼리의 결과를 이용하는 방법을 설명하겠습니다.
[사전 환경]
제어판의 ODBC 관리자에서 테스트용 ODBC 설정을 하나 생성합니다. 본 예제에서는 SS2000_ODBC로 추가하겠습니다.
1. 빈 패키지 파일을 하나 생성합니다.
2. 화면의 아래 부분에 있는 연결 관리자에서 마우스 오른쪽 버튼을 클릭하여 나타나는 메뉴 중 새 연결(W)를 선택한 후, ODBC 연결을 추가합니다.
3. 연결 관리자 창에서 ODBC 연결을 지정합니다.
4. 도구상자에서 데이터 흐름 작업을 추가한 후, 데이터 흐름 영역으로 이동하여 스크립트 구성 요소를 추가합니다. 이 때 유형은 원본으로 선택합니다.
5. 추가한 스크립트 연결을 더블 클릭하여 편집기를 엽니다. 편집기의 연결 관리자 탭에서 추가(A) 버튼을 클릭한 후, 연결 관리자 부분에 2단계에서 추가한 ODBC 연결을 지정합니다.
6. 조금 번거로운 작업을 수행해야 하는 단계입니다. 입/출력 탭에서 출력되는 열에 대한 정의를 추가해줘야 합니다. [출력 0] à [출력 열] 을 선택한 후, 열 추가(C) 버튼을 클릭한 후, 새로운 열을 하나 추가합니다. 이 열의 이름을 au_id로 변경하고 DataType을 문자열 [DT_STR], Length를 10으로 설정합니다. 동일한 방식으로 au_lname이라는 열을 추가하고 DataType을 문자열 [DT_STR], Length를 40으로 설정합니다.
7. 스크립트 탭의 스크립트 디자인(S)를 클릭하여 VSA를 실행시킨 후, 다음 스크립트를 입력합니다. 스크립트에 대한 설명은 주석 부분을 참고하시기 바랍니다.
Imports System Imports System.Data Imports System.Math Imports Microsoft.SqlServer.Dts.Pipeline.Wrapper Imports Microsoft.SqlServer.Dts.Runtime.Wrapper Imports system.Data.Odbc ' ODBC 연결을 위해 다음을 포함합니다.
Public Class ScriptMain Inherits UserComponent
Dim odbcConn As OdbcConnection ' ODBC 연결 Dim odbcCmd As OdbcCommand ' ODBC 명령개체 Dim odbcParam As OdbcParameter ' ODBC 매개변수개체 Dim odbcReader As OdbcDataReader ' ODBC 데이터개체
Public Overrides Sub AcquireConnections(ByVal Transaction As Object)
Dim connectionString As String connectionString = Me.Connections.연결.ConnectionString odbcConn = New OdbcConnection(connectionString) odbcConn.Open()
End Sub
Public Overrides Sub PreExecute()
Dim odbcCmd As New OdbcCommand("SELECT au_id, au_lname FROM pubs.dbo.authors", odbcConn) odbcReader = odbcCmd.ExecuteReader
End Sub
Public Overrides Sub CreateNewOutputRows()
Do While odbcReader.Read With 출력0Buffer .AddRow() .auid = odbcReader.GetString(0) .aulname = odbcReader.GetString(1) End With Loop
End Sub
Public Overrides Sub PostExecute()
odbcReader.Close()
End Sub
Public Overrides Sub ReleaseConnections()
Me.Connections.연결.ReleaseConnection(odbcConn)
End Sub
End Class |
8. 임의의 레코드 대상 또는 플랫 파일 대상 등을 추가하여 생성한 원본과 연결한 후 출력 결과를 확인합니다.
한대성 | DataReader를 이용하여 .NET 공급자\Odbc Data Provider로 ODBC 원본을 구현하는 방법도 있습니다.~^^ (늦게 알았습니다..흑...) 대신 DataReader를 이용한 ODBC 대상은 안되더군요... 참고하세요~~ |
2007/01/26 |
'연구개발 > DTS & SSIS' 카테고리의 다른 글
조회 변환을 이용한 데이터 동기화 작업 (0) | 2011.08.27 |
---|---|
ODBC 데이터 대상 구현하기 (0) | 2011.08.27 |
유니코드 형을 일반 문자형으로 변환하기 (0) | 2011.08.27 |
FOR 루프 컨테이너를 이용한 대기 작업 구현 (0) | 2011.08.27 |
비표준화된 입력 데이터에 대한 처리 (0) | 2011.08.27 |