#title Data Reader 원본에서 동적 쿼리 사용 [[TableOfContents]] ==== 개요 ==== Data Reader 원본에서 동적쿼리를 사용하는 방법에 대한 예제다. MySQL을 Data Reader로 SSIS에서 사용할 때에 성능문제(참고:[SSIS의 DataReader원본을 사용하여 MySQL 접근(ODBC)시 성능 문제 발생])가 발생했었다. 어쨌든 이를 해결하는 방법으로 또 다른 대안을 제시하고 동적쿼리를 던지는 방법까지 보겠다. 다음의 프로그램을 다운받아 설치하자. [http://dev.mysql.com/downloads/connector/net/6.0.html Download Connector/Net 6.0] (.Net 3.5 이상 필요, .Net 2.0은 5.x 버전 사용) ==== 예제 ==== 1. SSIS에서 새패키지를 생성한다. 2. 도구상자에서 {{{[데이터 흐름 작업]}}}을 끌어다가 놓는다. 3. {{{[데이터 흐름 작업]}}}을 더블 클릭하고, {{{[DataReader 원본]}}}을 끌어다가 놓는다. 4. 연결관리자에서 {{{[새 ADO.NET 연결]}}}을 선택하여 연결을 만든다. (Connector/Net을 설치했다면 MySQL Data Provider가 보일 것이다) attachment:dr01.jpg attachment:dr02.jpg 5. {{{[DataReader 원본]}}}을 더블 클릭하여 생성된 연결관리자를 선택한다. attachment:dr03.jpg 6. 구성요소 탭을 클릭하여 SqlCommand를 다음과 같이 limit 1을 주어 편집한다. attachment:dr04.jpg 7. 열 맵핑 탭을 클릭하여 열 맵핑을 한 후 {{{[확인]}}} 버튼을 눌러 편집을 종료한다. attachment:dr05.jpg 8. 확인을 위해 도구상자에서 {{{[DataReader 대상]}}}을 끌어다 놓고, {{{[DataReader 원본]}}}과 연결한다. attachment:dr06.jpg 9. 일단 제어 흐름으로 나와 변수를 하나 생성한다. attachment:dr08.jpg 9. 여기부터가 중요!! 제어 흐름으로 나와 {{{[데이터 흐름 작업]}}}의 속성에서 '기타'부분의 Expressions를 편집한다. attachment:dr07.jpg 10. 편집화면에서 아래의 그림과 같이 속성을 {{{[DataReader 원본].[SqlCommand]}}}를 선택한다. attachment:dr09.jpg 11. 식을 편집해야 하는데 위의 그림에서 {{{[....]}}} 버튼을 눌러 다음과 같이 편집한다. attachment:dr10_1.jpg 12. 모든 편집을 마쳤다면 {{{[확인]}}} 버튼을 눌러 편집을 종료한 후 F5를 눌러 실행시키자. 1건이 아닌 4건이 나온 것을 볼 수 있다. 처음에 주었던 SQL이 아닌 Expressions에서 편집된 SQL이 실행되었음을 짐작할 수 있다. attachment:dr11.jpg 13. {{{[DataReader 원본]}}}에서 구성 요소 속성 탭을 보면 편집한 쿼리로 바뀐 것을 볼 수 있다. 그러므로 재편집 할 경우에는 단계9의 Expressions를 편집에서 "select * from event where seq_num <= " + @[사용자::p] + " limit 1"과 같이 편집하여 {{{[DataReader 원본]}}}을 수정하는 것이 바람직 할 것이다. attachment:dr12.jpg