SQL2000 강좌
DTS를 조금더 확장시켜 프로그래밍 가능한 DTS패키지를 생성하자는 것입니다.
사실 DTS라는 녀석이 종종 수행하는 녀석이고..
잘 안다고 생각하시는 분들 이라도.. 이 프로그래밍 기능이나 특수한 여러 옵션들을
적절하게 수행하는 분들은 많지 않습니다.
이미 wrox출판사에서 책한권 분량으로 나와 있지요.
저는 구입은 못하고 어깨 너머로 맛만 보았습니다만... T.T
http://www.amazon.com/exec/obidos/search-handle-form/107-7024388-4700558
부분에서 여러 DTS 책들을 보실 수 있습니다. - 아마존의 경로이니 변경될 수 있습니다.
그만큼 내용이 많은게 바로 DTS라는 녀석이며 많은 분들은 오로지..
맛만 보시는 것이지요 -_-;; 저역시 상세한 많은 내용은 설명 드리기 힘들겠으며..
주요한 프로세스만 엮어서 생성후 보여 드릴 것입니다.
먼저 생성하기 전에.. DTS 디자이너라는 녀석에 대해서 알아 보도록 하지요.
이렇게 데이터 변환 서비스 하위의 로컬 패키지 부분에서 바우스 우버튼
새패키지를 하시면 되며.. 바로 앞에서 DTS 위져드에서 패키지 저장을 체크하고
패키지를 만드셨다면? 만들어진 패키지도 보일 겁니다.
패키지를 열려면 해당 패키지를 열면 되고... 새 패키지를 만들려면? 저렇게 하면 됩니다.
새 패키지를 여셨으면? 저러한.. 허연 화면에 뭔가 눌러야 할게 대단히 많은 -_-;;
암울한 상황이 벌어집니다. 화이팅을 한번 외치고 설명에 들어가 보겠습니다.
-_-;;
DTS패키지 작업은 크게 네부분 입니다.
패키지에 대한 저장, 주석을 달기 위한 메뉴인 패키지 메뉴
데이터 소스나 데이터 타겟에 연결하는 부분을 정의하는 연결 메뉴
작업 내역이 SQL서버간 개체 전송인지 SQL구문을 이용한 작업인지.. 특수한 변환
작업인지를 정의해주는 작업 메뉴
그리고 A라는 작업이 성공이면 A-Success 로 가라.. 라던가 실패면 A-Fail로
가라고 정의할 수 있는 워크플로 메뉴 가 있습니다.
다닥다닥 붙어있는 아이콘은 각각의 메뉴에 대한 녀석들이니 참고만 하세요.
패키지 메뉴의 내역들인
녀석들은 어떤 녀석들인지 감이 오실 것입니다.
테스트 주석 추가나.. 저장 정도만 이해 하시면 되지요.
중요한 이야기를 시작해 보겠습니다.
데이터 연결에 대한 부분
SQL서버.. 엑세스.. 등등과.. Microsoft Data Link인 UDL화일을 이용한 연결 역시
있습니다. 설명드린대로.. 이녀석을 가지고 데이터 소스나 데이터 타겟에
연결을 지정해 주셔야 합니다. - 당연히 중요한 내역이며..
DTS작업
다음 작업 부분을 봐 보시면?
이러한 내용으로 대단히 많은 작업 내역인.. 예를들면.. 특수한 변환 작업을 위한
ActiceX스크립트 작업 - VB의 모듈과 같습니다.
SQL실행 작업 - SQL쿼리를 이용한 몇몇 작업
SQL Server 개체 복사 작업 - SQL서버간 개체 전송 작업
등등.. 여러가지 작업들이 있습니다.
DTS 워크 플로
끝으로 이렇게 워크 플로는 완료시, 성공시, 실패시의 세가지가 있으며
간단히 어떨때 어떤 작업으로 가라고 정의가 되는 것이지요.
이정도가 저의 설명이며...
이 녀석들을 가지고 우리의 패키지를 생성한다면?
1. 연결을 만들어 데이터 소스 / 데이터 타겟에 연결한다.
2. 작업을 정의해 여러가지 데이터 소스에 대해 변환 / 필요 작업을 적절하게
여러가지 작업 항목을 가지고 처리한후
3. 성공시 어떤 작업을 하며 실패시 어떤 작업을 하게하는 워크 플로를 지정
처리를 진행하게 하고
4. 여기서는 성공시 데이터 타겟에 데이터를 보내는 작업이 되며 성공 완료 메시지를
관리자에게 전달
5. 실패하더라도 실패 메시지를 관리자에게 보내면 된다.
대강 이런 흐름으로 생성하면 된다는게 느껴질 것입니다.
자. 그럼 우리의 목표를 다시한번 알아 볼까요?
목표 : 원격지의 SQL서버에 연결하고 SQL서버간 전송작업으로 데이터베이스의
모든 내용을 로컬 서버로 가져오는데.. 이 작업은 매일 수행되어야 하며
DB이름을 History유지를 위해.. Pubs20011231식의 년월일을 포함한 DB명으로
생성을 해야 하고 이곳에 데이터를 넣어야 한다. 작업이 실패하면 실패라는
메일을 받고 성공이라면 성공 메일을 관리자가 받아야 한다.
조금더 분산시켜 개발자의 시각인 일명 "개눈깔"을 이용해 DTS패키지적으로 생각해 본다면?
1. 연결은 원격서버 / 로컬서버 두군데가 필요하다.
2. DB이름을 적절히 그날의 날짜로 생성해야 하며
3. 어려울듯한 작업으로 바로 위에서 생성한 DB에 데이터를 부어야 하고
4. 작업을 모두 완료하면 워크 플로를 적절히 이용 성공시 / 실패시 분기를 두어
각 작업에 맞도록 메일을 보내면 될듯 하다.
자. 이렇게 생각이 가능할 것입니다. 그렇다면.. - 아직 감이 잘 안오시겠지만..
예상되는 문제점을 나열해 보겠습니다.
2와 3번의 DB생성은 CREATE Database 로 하면 될듯 한데... 어떻게
SQLER20011230과 같은 DB이름을 전송해 줄 수 있을까? 라는 문제입니다.
전혀 다른 항목간에 저 이름을 전송해야 하는데.. 어떻게 하면 될 것인가?
- DTS 디자인에서 동적 속성 작업을 줄 수 있으며 여기서 전역변수를 적절히 이용
할 수 있습니다.
4번의 문제로.. 메일을 보낸다는 것인데.. SQLMail은 여러가지 셋업이 귀찮으며..
정확히 동작하는데 약간의 무리가 있을 수 있고...
도메인에 익스챈지 서버가 있어야만 가능한데.. 이걸 어쩌면 좋을지...
- SQLMail만이 메일을 보낼 수 있는 것은 아니며.. 여기서는 저장 프로시져로 메일을
보내는 녀석을 DTS엔진이 수행되는 로컬 시스템 MasterDB에 등록후 성공시
및 실패시 각각의 메일 전송 작업을 Windows2000이나 WinNT4의 SMTP 서비스를 이용
CDO를 이용한 메일 전송을 수행할 예정이니 이 녀석을 이용하면 된다.
이 내용은.. 이곳 SQLER Tip 게시판을 참고하자.
자.. 이렇게 계획을 세웠다면?
이제 작업을 진행해 보도록 하겠습니다.
다음 DTS패키지 생성과 실행 부분을 해 보도록 하지요.
▶ 12. DTS(Data Transfer Service) -
3. DTS 디자이너 사용

부족하지만, SQLER의 누군가와 함께한 나눔을 통해 제가 더 많이 즐거웠습니다.
SQLER와 함께 즐거워 할수록, 그 나눔을 통해 더 많은 기회와 가치를 발견하게 되었습니다.
나눔의 생각이 앞으로도 계속, SQLER를 움직일 것입니다.
코난, 김대우 / SQLER 운영자 / 골라먹는 SQLER RSS 정보 구독 / 실시간 SQLER 소식 uxkorea 트위터

코난