Home | Print | Q/A | Guest | NewsLetter
Display context of search results Case-sensitive searching
Database System
Data Warehouse
Data Analysis
Operating System
Open Source
Enterprise Architecture
Software Engineering
Process
Working Smart

SQL Server
PostgreSQL
Oracle
DB2
Teradata
MySQL
Performance Tuning
Programming

Link
Philosophy
Tools
Misc
주인놈
_
_
SideBar Edit

Contents

1 개요
2 예제


1 개요 #

Data Reader 원본에서 동적쿼리를 사용하는 방법에 대한 예제다. MySQL을 Data Reader로 SSIS에서 사용할 때에 성능문제(참고:SSIS의 DataReader원본을 사용하여 MySQL 접근(ODBC)시 성능 문제 발생)가 발생했었다. 어쨌든 이를 해결하는 방법으로 또 다른 대안을 제시하고 동적쿼리를 던지는 방법까지 보겠다. 다음의 프로그램을 다운받아 설치하자.
[http]Download Connector/Net 6.0 (.Net 3.5 이상 필요, .Net 2.0은 5.x 버전 사용)

2 예제 #

1. SSIS에서 새패키지를 생성한다.
2. 도구상자에서 [데이터 흐름 작업]을 끌어다가 놓는다.
3. [데이터 흐름 작업]을 더블 클릭하고, [DataReader 원본]을 끌어다가 놓는다.
4. 연결관리자에서 [새 ADO.NET 연결]을 선택하여 연결을 만든다. (Connector/Net을 설치했다면 MySQL Data Provider가 보일 것이다)

dr01.jpg

dr02.jpg

5. [DataReader 원본]을 더블 클릭하여 생성된 연결관리자를 선택한다.
dr03.jpg

6. 구성요소 탭을 클릭하여 SqlCommand를 다음과 같이 limit 1을 주어 편집한다.
dr04.jpg

7. 열 맵핑 탭을 클릭하여 열 맵핑을 한 후 [확인] 버튼을 눌러 편집을 종료한다.
dr05.jpg

8. 확인을 위해 도구상자에서 [DataReader 대상]을 끌어다 놓고, [DataReader 원본]과 연결한다.
dr06.jpg

9. 일단 제어 흐름으로 나와 변수를 하나 생성한다.
dr08.jpg

9. 여기부터가 중요!! 제어 흐름으로 나와 [데이터 흐름 작업]의 속성에서 '기타'부분의 Expressions를 편집한다.
dr07.jpg

10. 편집화면에서 아래의 그림과 같이 속성을 [DataReader 원본].[SqlCommand]를 선택한다.
dr09.jpg

11. 식을 편집해야 하는데 위의 그림에서 [....] 버튼을 눌러 다음과 같이 편집한다.
dr10_1.jpg

12. 모든 편집을 마쳤다면 [확인] 버튼을 눌러 편집을 종료한 후 F5를 눌러 실행시키자. 1건이 아닌 4건이 나온 것을 볼 수 있다. 처음에 주었던 SQL이 아닌 Expressions에서 편집된 SQL이 실행되었음을 짐작할 수 있다.
dr11.jpg

13. [DataReader 원본]에서 구성 요소 속성 탭을 보면 편집한 쿼리로 바뀐 것을 볼 수 있다. 그러므로 재편집 할 경우에는 단계9의 Expressions를 편집에서 "select * from event where seq_num <= " + @[사용자::p] + " limit 1"과 같이 편집하여 [DataReader 원본]을 수정하는 것이 바람직 할 것이다.
dr12.jpg

EditText|Print|FindPage|DeletePage|LikePages|http://www.databaser.net|last modified 2010-04-05 14:54:48