제 2강 일별 테이블 생성 작업 추가하기
한대성 (admin@sqlleader.com)
에이디컨설팅 / 책임 컨설턴트
SQLLeader.com / 운영자
1강이 생각보다 길었던 관계로 2강은 매우 짧게 진행하겠습니다. (길어야 좋을 것 없죠.ㅎㅎ)
파일에서 읽어온 데이터를 테이블에 넣는 작업을 할 때, 대상 테이블이 이미 있는 경우에는 문제가 없지만 테이블이 없는 경우에는 작업이 실패가 납니다. 본 강의에서는 이 대상 테이블이 있는지를 확인하고 없는 경우에는 만들어주는 SQL 실행 작업을 수행하는 작업 개체를 추가하는 것입니다.
1강의 패키지에서 계속 확장합니다. 테이블이 존재하고 생성하는 데 이용할 작업 개체는 뭐니뭐니해도 SQL 실행 작업이 최고입니다. 왜냐면? SQL 테이블을 관리하는 SQL 문을 실행하기 때문이지요.
제어 흐름에 있는 WebLog 데이터 로딩 작업 앞에다가 SQL 실행 작업을 추가하고 이 이름을 『대상 테이블 생성』이라고 변경합니다.
작업 옆에 빨간색으로 경고 마크가 신경 쓰이지만 일단은 무시하고,(뒤에서 설명 드립니다.) 해당 작업을 더블 클릭한 후 나타나는 SQL 실행 작업 편집기에서 다음과 같이 연결과 SQL 실행 쿼리를 설정합니다.
SQLStatement는 1강에 있었던 테이블 생성문을 그대로 입력하면 됩니다.
IF EXISTS (SELECT * FROM sysobjects WHERE Type = 'U' AND Name = N'WebLogData') DROP TABLE WebLogData GO CREATE TABLE WebLogData ( Seq int identity(1,1) NOT NULL, Date char(10) NOT NULL, Time char(8) NOT NULL, IP varchar(15) NOT NULL, URI_Stem varchar(255) NULL, Uri_Query varchar(255) NULL, Status smallint NULL, User_Agent varchar(200) NULL, CONSTRAINT PK__WebLogData PRIMARY KEY(Seq) ) GO |
이 쿼리문을 외부에 파일로 저장한 후, 이를 지정할 수도 있습니다. (이런 형태로도 자주 이용됩니다.)
참고로, 편집기의 속성 중 BypassPrepare 옵션을 살펴봅시다.
SP2 이전에는 이 설정의 기본값이 False이었지만 SP2 이후에는 True로 변경된 것을 보실 수 있습니다.
작업 설정은 이걸로 끝입니다. 너무 썰렁한 것 같아 한 가지만 더 설명하겠습니다.
쿼리 분석기에서 대상 테이블을 삭제만 하고선 패키지를 다시 열어봅시다.
위와 같이 경고 마크가 나타납니다. 유효성 체크 오류라는 것입니다.
SSIS 패키지의 좋은 기능 중 하나인 실행 전 유효성 검사라는 기능으로 인해 나타나는 것입니다. 쉽게 설명하자면
『WebLog 데이터 로딩 작업에서 WebLogData라는 테이블에 데이터를 넣도록 설정되어 있는데, 체크해 보니깐 해당 테이블이 없소이다. 뭔가 문제 있는 것 아닌가요?』
라는 의미의 경고입니다. 실수로 테이블을 만들지 않은 경우라면 상당히 고마운 메시지이지요. 실컷 작업을 수행하다가 에러를 발생시키는 것 보다는 미리 점검해 주기 때문입니다.
SSIS는 이러한 유효성 검사를 기본적으로는 세 번 합니다. 패키지 파일을 열 때, 패키지가 시작될 때, 그리고 해당 컨테이너(작업 포함)가 실행되는 시점입니다.
만약 위와 같은 경고가 나타난 상태에서 패키지를 실행하려고 하면 두 번째 유형의 유효성 검사에서 실패가 되어 실행이 안됩니다.
하지만 본 예제의 경우와 같이 패키지가 실행되면 테이블이 생성이 되어 정상적으로 작업이 수행될 것이 보장되는 경우에는 문제일 수 있습니다. 이러한 경우에 사용하는 옵션이 DelayValidation 이라는 옵션입니다.
WebLog 데이터 로딩 작업을 선택한 후, 속성 창에서 DelayValidation 옵션을 False에서 True로 변경을 합니다. 이 옵션을 설정하게 되면 해당 작업에 대한 세 단계의 유효성 검사 중, 첫 번째와 두 번째 단계를 하지 않게 됩니다. 즉, 패키지를 열 때와 패키지를 시작할 때에는 유효성 검사를 하지 않고 해당 작업이 실행되는 시점에서만 유효성 검사를 하기 때문에 본 예제와 같은 경우에 문제없이 수행할 수 있게 됩니다.
패키지를 실행시키면 경고 표시가 있더라도 정상적으로 수행됩니다.
'연구개발 > DTS & SSIS' 카테고리의 다른 글
실습 강좌 4 - 데이터 필터링 구현 (0) | 2009.06.20 |
---|---|
실습 강좌 3 - 파일 존재 확인 작업 추가 (0) | 2009.06.20 |
실습 강좌 1 - 텍스트 데이터 파일을 테이블로 로딩하기 (0) | 2009.06.20 |
실습 강좌 0 - 강좌 소개 - 텍스트 파일 로딩 (0) | 2009.06.20 |
기본 강좌 50 - SSIS 기타 사항 (기본 강좌 끝) (0) | 2009.06.20 |