스크립트 구성 요소 – [데이터 대상] 사용
안녕하세요 강성욱 입니다. (www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)
이번 시간에는 [스크립트 구성 요소] 사용에 대해서 알아 보도록 하겠습니다.
3부 – 데이터 대상으로 사용하기!
1부 – [스크립트 구성 요소] –[데이터 원본] 관련 링크
http://blog.naver.com/jevida/140160648324
2부 – [스크립트 구성 요소]-[데이터 변환] 관련 링크
http://blog.naver.com/jevida/140160719291
이번 [데이터 대상]은 입력 데이터 중에서 [OrderQty] 의 [합계]를 [메시지 박스]로 출력하여 봅니다.
[BIDS]를 실행하여 [Integration Services 프로젝트]를 생성 합니다.
[제어 흐름] 탭에서 [데이터 흐름 태스크]를 드래그 앤 드롭으로 추가 합니다.
[스크립트 구성 요소 3] 이름을 지정하여 태스크를 생성 합니다.
[데이터 흐름]탭에서 그림과 같이 [스크립트 구성 요소]를 끌어다 놓습니다. 이때 팝업으로 [스크립트 구성 요소 유형 선택]창이 나타 납니다.
이번 실습에서는 [대상]으로 선택 합니다.
[OLE DB 원본]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
그림과 같이 편집 창이 나타나면 [OLE DB 연결 관리자]에서 원본 DB의 연결 관리자를 선택하고 해당 테이블을 선택하여 [미리보기]를 이용하여 정상적으로 데이터가 읽어오는지 확인 합니다.
(본 실습에서는 Adventureworks의 Sales.SalesOrderDetail 테이블 사용)
[제어 흐름] 탭으로 이동하여 빈 공간에서 마우스 오른쪽을 클릭하여 [변수]를 선택 합니다.
[변수] 탭이 나타나면 변수명(SumQty)을 설정하고 범위를 [Package]로 지정한 다음 데이터 형식을 [Int32]로 지정 합니다.
[데이터 흐름] 탭으로 이동하여 [스크립트 구성 요소]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
[입력 열] 탭에서 [OrderQty]를 선택 합니다.
[입/출력] 탭에서 입력 이름을 [In_Qty]로 변경 합니다. (한글 사용의 경우 글자 깨짐으로 인하여 인식 불능의 문제가 있습니다.)
[스크립트] 탭에서는 [ReadWriteVariavles]에서 패키지 차원의 변수로 지정한 [User::SumQty]를 선택 합니다. 그리고 [스크립트] 버튼을 이용하요 스크립트 편집기를 실행 합니다.
스크립트 편집기에서 다음과 같이 코드를 입력 합니다.
/* Microsoft SQL Server Integration Services Script Component * Write scripts using Microsoft Visual C# 2008. * ScriptMain is the entry point class of the script.*/
using System; using System.Data; using Microsoft.SqlServer.Dts.Pipeline.Wrapper; using Microsoft.SqlServer.Dts.Runtime.Wrapper;
[Microsoft.SqlServer.Dts.Pipeline.SSISScriptComponentEntryPointAttribute] public class ScriptMain : UserComponent { int SumQty = 0;
public override void PreExecute() { base.PreExecute(); /* Add your code here for preprocessing or remove if not needed */ }
public override void PostExecute() { base.PostExecute(); /* Add your code here for postprocessing or remove if not needed You can set read/write variables here, for example: Variables.MyIntVar = 100 */ Variables.SumQty = SumQty;
}
public override void InQty_ProcessInputRow(InQtyBuffer Row) { /* Add your code here */
SumQty = SumQty + Row.OrderQty; }
} |
[제어 흐름]탭으로 이동하여 [스크립트 태스크] 작업을 드래그 앤 드롭으로 끌어다 놓습니다.
[스크립트 태스크]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
[스크립트] 탭에서 [ReadWriteVariables]에서 [User::SumQty] 변수를 선택 합니다. 그리고 [스크립트 편집]을 실행합니다.
다음과 같이 메시지 박스를 출력하는 코드를 프로그래밍 합니다.
MessageBox.Show(Dts.Variables["SumQty"].Value.ToString()); |
편집이 완료되었으면 패키지를 실행 합니다.
늘 그러듯!
녹색 : 정상 실행
빨간색 : 오류 발생
패키지를 실행하면 메시지 박스로 [OrderQty]의 총 합계가 출력되는 것을 확인 할 수 있습니다.
SSMS를 실행하여 실제 Qty의 합과 같은지 확인 합니다.
SSMS에서 실행한 합과 메시지 박스에 출력된 합이 같음을 알 수 있습니다.
'SQL Server > SSIS 강좌' 카테고리의 다른 글
프로세스 실행 태스크 (0) | 2015.07.16 |
---|---|
변수 – 다양한 사용자 변수를 만들어 보자 (0) | 2015.07.16 |
스크립트 구성 요소 – [데이터 변환] 사용 (0) | 2015.07.16 |
스크립트 구성 요소 – [데이터 원본] 사용 (6) | 2015.07.16 |
피봇 해제 변환 – 피봇된 데이터를 테이블 형태로 변환 (0) | 2015.07.16 |