수안이의 컴퓨터 연구실

  • Mainpage
  • About Me
  • Tags
  • Metapage
  • Notice
  • Location
  • Keywords
  • Guestbook
  • Admin
  • Write an Article
  • Total | 1620982
  • Today | 362
  • Yesterday | 482

1 Articles, Search for 'OLAP 큐브'

  1. 2007/05/21 [SQL 서버 특강] ③ 합리적인 DTS 실행 비법
Database/MSSQL2007/05/21 10:34

[SQL 서버 특강] ③ 합리적인 DTS 실행 비법

데이터 변환 서비스(DTS)는 SQL 서버 소프트웨어 개발자들의 신뢰를 한몸에 받고 있다.

Jeffrey T. Juday (ZDNet Korea)
2004/04/30
원문보기

[SQL 서버 특강] ① 성능 향상을 위한 인덱싱 기법
[SQL 서버 특강] ② MS SQL 서버 클러스터 셋업
[SQL 서버 특강] ③ 합리적인 DTS 실행 비법

DTS 사용 시나리오는 아래와 같이 데이터베이스 관리, 개발의 거의 전 영역에 걸쳐 관계를 맺고 있다.

데이터웨어하우징 - 트랜잭션 프로세싱 시스템에서 데이터를 복사, 보고서용 롤업(roll-up) 테이블 메꿈

OLAP 큐브 구축

플랫(flat) 파일과 비 데이터베이스에서 데이터베이스로 데이터를 대량 복사

MS 오피스 문서 보고서 생성

분산 트랜잭션 코디네이터(DTC)를 이용해 멀티데이터베이스 작동을 수행
DTS는 데스크톱 PC에 설치된 프로그램이나 필요할 경우 DTS 패키지를 실행할 수 있도록 한 웹사이트를 통해 활성화된다. DTS 패키지 설치에 있어 가장 복잡한 결정 중 하나는 DTS 패키지를 사용할지, 사용한다면 어떤 방법을 택할지 선택하는 것이다.

패키지 설치 방법
DTS 패키지를 적재적소에 사용할 수 있도록 설정하려면 몇가지 사항을 고려해야 한다. 하나씩 살펴보자.

▲SQL 서버 잡(job)
SQL 서버에서 잡을 생성하고 sp_start_job 저장 프로시저를 호출할 수 있다.

sp_start_job은 비동기 프로세스라는 것이 단점이다. 성공하든 실패하든 그 결과를 볼 수 없기 때문에 sp_help_job 시스템 저장 프로시저를 통해 결과를 정기적으로 조사할 수밖에 없다.

성공이나 실패 여부를 우려하지 않고 호출하려 하는 경우 비동기 방식의 잡은 데스크톱이나 웹 애플리케이션 개발을 복잡하게 만들 수 있다. 잡은 관리자 권한이 없어도 실행될 수 있다. 그러나 이렇게 설정하려면 몇가지 절차가 더 필요하다.

▲클라이언트 데스크톱에 DTS DLL 설치
두번째 방식은 엔터프라이즈 매니저 프로그램이나 DTS DLL을 컴퓨터에 설치하고 DTS 패키지를 호출하는 것이다. DTS 패키지를 사용자 컴퓨터에서 수행하는 것은 가능한 대안이긴 하지만 각 컴퓨터마다 설치를 해야 하며 DTS 패키지가 업데이트됐을 때 배포 방안을 만들어놔야 한다는 것이 단점이다.

▲Sp_OA 확장 저장 프로시저 사용
이 방식이 바로 이번 강좌에서 집중적으로 살펴볼 것으로 sp_OA 시스템 저장 프로시저를 활용해 DTS 패키지를 프로그램적으로 호출하는 것이다. Sp_OA 시스템 저장 프로시저를 사용하면 sp_start_job 프로시저를 이용하거나 DTS DLL을 데스크톱에 설치함으로써 생기는 제약점에 영향을 받지 않게 된다.

VBS를 이용해 DTS 패키지를 호출하자
DTS 패키지를 수행하기 위한 저장 프로시저를 구축하는 것은 VBS(VBScript) 스크립트 작성에서 시작한다. 사실 sp_OA 저장 프로시저를 직접 사용하는 것은 좀 어설플 수 있기 때문에 sp_OA 저장 프로시저로 코드를 구현하기 전에 VBS로 원하는 스크립트 코드를 구현하는게 제일 좋다. 게다가 코드 작성에 비주얼 베이직을 사용하기 때문에 스크립트 개발도 더 단순화된다.

그림 1에 있는 라이브러리를 프로젝트 레퍼런스에 추가함으로써 DTS 패키지 오브젝트 라이브러리를 참조시킬 수 있다. DTS 패키지를 실행하기 위한 VBS 스크립트는 이곳에서 볼 수 있다.

사용자 삽입 이미지
그림 1 DTS 오브젝트 라이브러리


코드에서 보다시피 LoadFromStorageFile 함수를 사용했다. 개발은 대부분 테스트 환경에서 진행된다. DTS의 구조적 파일 포맷은 테스트 환경에서 실제 업무 환경으로 이전할 때 가장 빛을 발한다.

Sp_OA를 구현하자
VBS 스크립트를 작성했다면 sp_OA 확장 저장 프로시저를 이용해 코드를 구현할 준비가 된 것이다. VBS 스크립트와 마찬가지로 sp_OA 시스템 저장 프로시저도 오브젝트 라이브러리의 COM+ API와 상호 작용할 수 있도록 한다.

Sp_OACreate는 비주얼 베이직이나 VBS에서 호출하는 CreateObject 함수와 유사하다. Sp_OAGetProperty, sp_OASetProperty, 그리고 sp_OAMethod를 사용하면 오브젝트 라이브러리의 속성과 함수를 사용할 수 있다.

비주얼 베이직이나 VBS와 달리 sp_OA 저장 프로시저는 COM+ 에러코드가 발생해도 SQL 명령어가 실패하거나 하진 않는다. 따라서 sp_OA 함수는 성공했는지 일일이 검사해야 한다.

또한 sp_OA 저장 프로시저의 많은 부분은 참조자 변수를 사용한다. 즉 Sp_OA 저장 프로시저의 적절한 변수 옆에는 항상 OUTPUT 명령어를 참조시켜야 한다. OUTPUT 명령어가 생략되면 집행된 Transact SQL은 경고문을 발생시키지 않는다. 런타임시 저장 프로시저는 제대로 실행될 것이다. 그러나 유효한 값을 반환하진 못한다. 상세한 구현 코드는 이곳에서 볼 수 있다.

이 구현 코드에는 DTS 패키지의 이름을 바꾸고 효율적으로 구현할 수 있도록 하는 테이블이 포함돼 있다. sp_AdRunDTSPackageOnServer 저장 프로시저는 ID 값을 변수로 받아들인다. 실행을 계속하기 이전에 프로시저는 SQL 서버의 DTS 패키지 경로를 T_AdDTSPackageSetup 테이블에서 추출해낸다.

필수적인 보안 사항들
보안에 대한 본격적인 논의는 강좌의 범위를 벗어나지만 일부 고려해야 할 점만 지적하고 넘어가자.

sp_AdRunDTSPackageOnServer 저장 프로시저를 구현하려면 마스터 데이터베이스에서 sp_OA 확장 시스템 저장 프로시저의 EXECUTE 실행 권한이 필요하다. 악의적인 SQL 서버 전문 사용자가 원래 목적 이외의 용도로 sp_OA를 사용하는 것을 방지하려면 보다 엄격한 보안 수준을 구현해 애플리케이션용 SQL 서버의 역할을 명확하게 설정하라.

CURRENT_USER Transact SQL 함수는 안전이나 가벼운 수준의 보안에 도움이 된다. CURRENT_USER와 T_AdDTSPackageSetup 테이블의 모든 필드를 사용해 질의를 하면 특정 DTS 패키지를 수행할 수 있도록 권한이 설정돼 있는지 알 수 있다.

DTS 패키지는 SQL 서버 에이전트 서비스용 계정 설정이란 보안 맥락에서 볼 때 SQL 서버에서 수행돼야 할 것이다. 따라서 DTS 패키지가 ASCII 파일을 파일 시스템에서 읽는 경우를 상정해보면 SQL 서버 에이전트의 계정이 파일 사용 권한을 갖도록 설정됐는지 확인해야 한다.

알아두면 좋은 점들
sp_OA 시스템 저장 프로시저를 사용해 다른 COM+ 라이브러리와도 상호 작용할 수 있다. 또한 이 프로시저들은 ODBC, 그리고 SQL 서버 시스템이 아니더라도 액티브X 데이터 오브젝트(ADO)를 사용한다면 유용하게 쓰일 수 있다.

아마 눈치 챘을지 모르지만 10줄 정도 길이의 VBS 스크립트로도 가능한 작업을 구태여 구현한다는 것은 비실용적이다. 게다가 결과로 얻어지는 Transact SQL 코드는 바빠지게 되며 자주 수행하기에 약간은 성가시다.

SQL 서버 2000 북스 온라인에는 어떤 COM 오브젝트 라이브러리가 지원되는지, 그리고 sp_OA 시스템 저장 프로시저와 관련해 상세하게 기술돼 있다. 다음에 DTS 패키지를 수행해야 할 일이 생긴다면 sp_OA 시스템 저장 프로시저의 사용을 고려해 보라. @
"MSSQL" 카테고리의 다른 글
  • SQL Server for Developer: 개발자를 위한 튜닝 가... (0)2007/05/21
  • 개발자를 위한 튜닝 가이드 - 쿼리 디자인 (0)2007/05/21
  • [SQL 서버 특강] ③ 합리적인 DTS 실행 비법 (0)2007/05/21
  • [SQL 서버 특강] ② MS SQL 서버 클러스터 셋업 (0)2007/05/21
  • [SQL 서버 특강] ① 성능 향상을 위한 인덱싱 기법 (0)2007/05/21
2007/05/21 10:34 2007/05/21 10:34
Posted by webdizen
Tags OLAP 큐브, Sp_OA, SQL Server
No Trackback No Comment

Trackback URL : http://www.webdizen.net/blog/trackback/3015

Leave your greetings.

[로그인][오픈아이디란?]

«Prev  1  Next»

RSS HanRSS
Blog Image
webdizen
이 곳은 컴퓨터에 대해 연구하고, 공유하고, 소통하기 위한 연구실입니다. 개인적으로는 OLAP, Data Mining, Semantic Web, Data Modeling에 대해서 연구하고 있습니다.

Categories

전체 (2998)
Webdizen (134)
Life (6)
Diary (16)
Blog (9)
IDEA (1)
Travel (10)
Book (14)
Photo (7)
Movie (7)
Music (13)
Leisure Sports (10)
Funny (5)
Hardware (119)
Software (120)
Windows (5)
Unix & Linux (119)
Installation (4)
Kernel (10)
System (34)
Develop (22)
X-Window (0)
Applicaton (31)
Security (4)
Framework (2)
Hadoop (2)
Programming (805)
Algorithm & Data Structure (1)
Assembly (38)
UNIX/Linux C (95)
C++ (128)
STL (4)
Java (38)
Win32 API (92)
ATL/COM (44)
MFC (151)
.NET (26)
WCF/WPF (4)
C# (28)
Network Programming (17)
Database Programming (12)
OpenGL / DirectX (13)
Multimedia Programming (0)
Game Programming (21)
Parallel Distributed Progra... (0)
Reverse Engineering (0)
Debugging (9)
Python (1)
Ruby (1)
Ruby on Rails (1)
QT (4)
GTK (0)
JSP (0)
PHP (6)
ASP.NET (6)
ASP (3)
Development (28)
Useful Library (2)
Data Modeling (0)
Database (105)
Oracle (4)
MSSQL (41)
MySQL (2)
Data Warehouse (2)
Data Mining (3)
Network (66)
Web (78)
DHTML (4)
XHTML (1)
Javascript (1)
CSS (1)
AJAX (9)
XML (11)
Flex (1)
Silverlight (3)
Security (91)
DoS (1)
Kernel (10)
Scanning (3)
Sniffing (0)
Spoofing (4)
Overflow (28)
Web (11)
Shell (10)
Format String (14)
Window (2)
Embedded (70)
Multimedia (27)
Mobile (14)
Graphic (24)
Management (633)
Knowledge (581)
Hadoop (0)

Notice

  • 메타 블로그 사이트에 등록
  • 새해 맞이 블로그의 변화
  • 블로그 명칭 변경
  • 도메인(www.webdizen.net) 구...
  • TEXTCUBE 1.6.1로 업그레이드...

Tags

  • 로깅
  • 돌체 리만코
  • Weblog
  • 데이터 웨어 하우스
  • 평생교육원
  • fprintf
  • Optimizer
  • 비만
  • ucd-snmp
  • 스타 스키마
  • J&B 제트
  • 추격자
  • 리눅스 하드닝
  • tty
  • Portable Executable
  • 서버 로그인
  • tr
  • Property
  • 옷
  • Interface

Recent Articles

  • ASCII Code의 CRLF 제거 방법.
  • Hadoop 에서 c++ API 이용시....
  • Ubuntu Linux에서 Hadoop 구....
  • 내 심장을 한껏 뛰게한 "국가....
  • 스타 스키마 데이터베이스 설....

Recent Comments

  • ■ 온라인카지노 ▶ http://L....
    asdf 11/21
  • 그리고 혹시 해외여행자보험....
    kim 11/05
  • ★★실제 바다게임장과 똑같....
    asdf 11/04
  • sbsyama.co.to← 짱5000만당....
    asdf 11/04
  • ♡KicaZ??o(???) 바카라사....
    fdsf3fass 11/03

Recent Trackbacks

  • 파일 열기/저장하기 CFileDialog.
    은마군의 나태블록 02/11
  • World IT Show 2008.
    상우 :: Oranzie's BLOG 2008
  • cvs서버 설치하기.
    3인3색 2008
  • 속속 공개되는 Google Chart....
    PHP와 Web 2.0 2007
  • 마방진을 구하는 프로그램.
    Oranzie's BLOG 3 2007

Archive

  • 2009/09 (3)
  • 2009/08 (1)
  • 2009/03 (1)
  • 2009/02 (9)
  • 2009/01 (13)

Calendar

«   2009/11   »
일 월 화 수 목 금 토
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30          

Bookmarks

    • Administration
      • IIS.NET
      • NTFAQ
      • OS의 모든 것
      • 리눅스포털
    • Database
      • SQL Server Central
      • SQL Team
    • Development
      • .NET Heaven
      • ASP Alliance
      • ASP.NET 2.0
      • Bullog.net
      • C# Corner
      • C++ (C PlusPlus.com)
      • C++ Reference
      • CodeGuru
      • CodePlex
      • DebugLab
      • Dev Articles
      • Devpia
      • DotNet Junkies
      • DotNet Zone
      • Driver Online
      • GOSU.NET
      • HOONS 닷넷
      • Joinc 팀블로그
      • KOSR
      • MSDN Home Page
      • OSR Online
      • Sky.ph - 개발자 커뮤니...
      • TAEYO.NET
      • The Code Project
      • WindowsClient.net
      • 김상욱의 개발자 Side
      • 조인시 위키
    • Human Networks
      • belief21c's e-space
      • I think I can
      • Invisible Rover's Blog :D
      • Rodman®
      • ■ Feel So Good~! ■
      • 까만 나비
      • 나를 가꾸는 시간.
      • 나만의 즐거움~~!
      • 단녕
      • 상우 :: Oranzie's BLOG
    • Information Technology
      • Microsoft TechNet
      • 지디넷코리아 - 글로벌...
    • Security
      • FoundStone
      • milw0rm
      • NewOrder
      • OpenRCE
      • Phrack.org
      • Reverse Engineering b1...
      • Reverse Engineering Team
      • RootKit
      • SecurityFocus
      • SecurityXploded by Nag...
      • Wow Hacker
      • Zone-H
Textcube
Louice Studio Inc.
Powered by Textcube. Original designed by Tistory.