SQL 실행 작업
안녕하세요 강성욱 입니다.(www.sqltag.org, www.sqler.com, http://blog.naver.com/jevida)
이번 시간에는 [SQL 실행 태스크]에 대해서 알아 보도록 하겠습니다.
SQL 실행 태스크는 OLEDB, ODBC, ADO, EXCEL 연결 등을 이용하여 SQL 쿼리를 실행할 수 있는 작업 개체 입니다. 단순한 쿼리 형태 뿐만 아니라 입력 매개변수가 포함된 쿼리도 사용할 수 있으며 수행된 결과를 변수에 출력하도록 설정 할 수도 있습니다.
[BIDS]를 실행하여 [Integration Services 프로젝트]를 실행 합니다.
[제어 흐름]탭에서 [SQL 실행 태스크]를 마우스를 이용하여 드래그 앤 드롭으로 끌어다 놓습니다.
[SQL 실행 태스크]에서 마우스 오른쪽을 클릭하여 [편집]을 선택 합니다.
[SQL 실행 태스크 편집기]가 나타납니다.
[일반]탭에서는 연결 관리자 및 명령어 입력, 다양한 옵션을 설정할 수 있습니다.
SQL 문
- ConnectionType – 연결 유형을 지정 합니다. OLE DB, EXCEL, ODBC, ADO, ADO.NET, SQLMOBILE의 연결 유형이 있습니다.
- Connection – 연결 관리자 설정.
- SQLSourceType
- 직접 입력 – 실행할 쿼리를 직접 입력
- 파일 연결 – 실행할 쿼리를 별도의 파일에 저장한 후 이 파일을 사용. 파일 연결을 선택하면 SQLStatement 부분이 FileConnection으로 변경되며 쿼리가 저장된 파일에 대한 연결이 나타남.
- 변수 – 실행 할 SQL 쿼리를 String형 변수에 저장한 후 이를 사용.
- SQLStatement – 실행 할 쿼리문을 입력.
- IsQueryStroredProcedure – 실행할 쿼리가 저장 프로시저인지 설정.
- BypassPrepare – 쿼리를 실행하기 전에 쿼리에서 사용되는 열 정보에 대한 조사 작업을 건너뛸지 설정. OLE DB 연결을 이용하면 입력 매개 변수가 포함된 쿼리를 실행할 경우에는 이 값을 Ture로 설정 해야함.
결과 집합
- ResultSet – 쿼리 결과 유형을 지정. 결과 출력없이 단순히 실행되는 쿼리인 경우에는 없음으로 지정. 출력 결과가 존재하는 경우 결과 집합 탭에서 결과를 저장할 변수를 지정.
옵션
- TimeOut – 쿼리가 실행 할 수 있는 최대 시간 설정. 0으로 설정한 경우 시간제한 없이 계속 수행.
- CodePage – 실행도리 쿼리의 코드 페이지
일반
- Name – 작업 이름 설정
- Description – 작업의 설명을 설정
편집이 완료 되었으면 패키지를 실행 합니다.
늘 그러듯!
녹색 : 정상 실행
빨간색 : 오류 발생
간단하게 직접 쿼리문을 이용한 작업을 완료 하였습니다.
다음으로 매개변수 매핑을 하여 패키지를 만들어 보겠습니다.
매개변수를 매핑하기에 앞서 사용자 변수를 생성 합니다.
[편집]에서 [일반] 탭을 선택 합니다.
아래 그림과 같이 쿼리문에 ?를 확인 할 수 있습니다. SSIS의 변수를 WHERE 절의 매개 변수에 대입하여 실행하는 쿼리 입니다. ? 부분이 매개 변수 값이 입력되는 부분이며 [매개 변수 매핑] 탭에서 이를 지정하게 됩니다.
[매개 변수 매핑]탭을 선택 합니다.
추가 버튼을 이용하요 매핑할 항목을 등록 합니다.
변수 이름 – 대입할 변수를 지정. 미리 정해 놓은 변수가 없을 경우 [새 변수]를 이용하여 변수를 추가 합니다.
방향 – Input, Output, ReturnValue를 지정합니다. 저장 프로시저인 경우 출력되는 값이 있으면 Output 변수로 지정합니다.
데이터 형식 – 매개 변수의 데이터 형식을 지정.
매개 변수 이름 – 기본 값으로 NewParameterName이 입력되어 있지만 연결 방식에 따라 변경 해야 합니다.
연결 방식 | 입력 쿼리(프로시저 아닐 경우) | 매개 변수 이름 |
EXCEL, OLE DB | SELECT * FROM TABLE WHERE Vals1 = ? AND Vals2 = ? | 0, 1, 2, ---- |
ODBC | SELECT * FROM TABLE WHERE Vals1 = ? AND Vals2 = ? | 1, 2, 3, ---- |
ADO | SELECT * FROM TABLE WHERE Vals1 = ? AND Vals2 = ? | 임의의 이름 지정 가능 순서대로 매핑됨. |
ADO.NET | SELECT * FROM TABLE WHERE Vals1 = @Param1 AND Vals2 = @Param2 | 쿼리에서 사용한 매개 변수 이름(예, @Param1, @Param2) |
연결 방식 | 입력 쿼리(저장 프로시저) | 매개 변수 이름 |
EXCEL, OLE DB | EXEC usp_Proc ?, ? | 0, 1, 2, ---- |
ODBC | EXEC usp_Proc ?, ? | 1, 2, 3, ---- |
ADO | IsStoredProcedure = False 경우 EXEC usp_Proc ?, ? IsStoredProcedure = True 경우 usp_Proc ?, ? | 임의의 이름 지정 가능 순서대로 매핑됨. |
ADO.NET | IsStoredProcedure = False 경우 EXEC usp_Proc @Param1 IsStoredProcedure = True 경우 usp_Proc @Param1 | IsStoredProcedure가 false인 경우 쿼리에서 사용한 매개변수 이름 , True인 경우 프로시저에서 정의된 매개 변수 이름 |
결과 집합
결과 집합 탭은 쿼리가 실행 된 후 출력되는 결과가 있을 경우 결과값을 저장할 변수를 지정하는 부분입니다.
일반 탭에서 ResultSet 속성을 [없음]으로 지정한 경우 버튼이 비활성화 되며 단일 행 또는 전체 결과 집합, XML로 지정된 경우 활성화 됩니다.
- 단일 행 – 결과 이름에 출력되는 결과의 열 이름을 지정하고 변수 이름에는 값을 저장할 변수를 지정.
- 전체 결과 집합, XML – 반드시 결과 이름은 0으로 지정. 결과를 저장할 변수는 전체 겨로가 집합인 경우에는 Object 형, XML형인 경우에는 Object형 또는 String형 이어야 합니다.
매개변수 매핑이 완료 되었으면 패키지를 실행 합니다.
Profiler를 실행하여 보면 매개변수로 입력된 쿼리가 정상적으로 실행 되는 것을 확인 할 수 있습니다.
'SQL Server > SSIS 강좌' 카테고리의 다른 글
트랜잭션 – 패키지에서 트랜잭션을 제어하자 (0) | 2015.07.16 |
---|---|
스크립트 작업 및 ActiveX 스크립트 작업 (0) | 2015.07.16 |
WMI 이벤트 감시자 작업 (0) | 2015.07.16 |
WMI 데이터 판독기 태스크 (0) | 2015.07.16 |
FTP 작업 (0) | 2015.07.16 |