반응형

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로 변경을 합니다. 이 옵션을 설정하게 되면 해당 작업에 대한 세 단계의 유효성 검사 중, 첫 번째와 두 번째 단계를 하지 않게 됩니다. , 패키지를 열 때와 패키지를 시작할 때에는 유효성 검사를 하지 않고 해당 작업이 실행되는 시점에서만 유효성 검사를 하기 때문에 본 예제와 같은 경우에 문제없이 수행할 수 있게 됩니다.

 

 

패키지를 실행시키면 경고 표시가 있더라도 정상적으로 수행됩니다.

 

 

반응형

+ Recent posts