반응형
반응형

SQL Agent 또는 다른 PC에서 SSIS 패키지가 실행되지 않는 문제 (Updated 2007.05.14)

 

 

한대성

MS SQL Server MVP

에이디컨설팅 책임 컨설턴트 | SQLLeader.com 운영자

 

 

 

현상

로컬 PC 또는 서버에서는 패키지를 실행하면 제대로 수행이 되는데, 패키지 파일(*.dtsx)을 서버에 저장한 후 SQL Agent에 등록하여  실행하거나 패키지가 만들어진 PC나 서버가 아닌 다른 사용자의 환경에서 패키지를 실행할 경우 에러가 발생할 수 있습니다.

 

다음과 같이 패키지가 개발된 환경에서 직접 패키지를 실행하면 정상적으로 수행됩니다.

 

 

이 패키지를 SQL Agent에 다음과 같이 등록한 후 실행하면 에러가 발생합니다.

 

 

 

 

(Service Pack2 이전의 에러 메시지)

 

(Service Pack2 이후의 에러 메시지)

 

 

 

원인

SSIS 패키지의 기본 보안 수준인 ProtectionLevelEncryptSensitiveWithUserKey로 설정이 되어 있습니다.

이 값은 패키지의 제어 흐름 영역에서 빈 영역을 클릭한 후, 오른쪽에 있는 속성 창에서 확인할 수 있습니다.

 

EncryptSensitiveWithUserKey는 중요한 데이터(Sensitive Data)를 현재 패키지가 개발되는 사용자 프로필 기반의 키를 이용하여 암호화 한다는 의미입니다. 여기서 말하는 중요한 데이터란 DB의 연결 정보 중 패스워드, Web 서비스 연결의 패스워드와 같은 값입니다. 따라서 윈도우 인증이 아닌 패스워드를 이용한 OLE DB 연결이나 Web 서비스 작업 등이 포함된 경우, 중요한 데이터가 패키지에 포함된 상태이기 때문에 패키지가 암호화 됩니다.

수동으로 실행할 때에는 패키지가 암호화된 개인 키와 실행 환경의 개인키가 동일하기 때문에 정상적으로 실행됩니다. 하지만, 서버로 파일을 복사한 후, SQL Agent에서 실행하거나, 현재의 개발 PC가 아닌 다른 곳에 패키지를 복사해서 수행하게 되면, 패키지가 암호화된 개인키와 실행 환경의 개인키가 다르기 때문에 오류가 발생합니다.

 

 

 

해결 방안

 

[방법 1] 패키지의 ProtectionLevelEncryptSensitiveWithUserKey 대신, EncryptSensitiveWithPassword 또는 EncryptAllWithPassword로 설정한 후, PackagePassword 항목에 암호를 설정합니다.

이런 방식으로 저장하게 되면 패키지의 중요한 정보 또는 패키지 정보 전체가 개인키 대신 암호를 기반으로 암호화 시키게 됩니다.

이후, SQL Agent에서 이 패키지를 실행하기 위해 설정하는 단계에서는 다음과 같은 암호 입력 창이 나타납니다.

(일반 탭에서 실행할 패키지를 지정한 후, 다른 탭을 클릭할 경우 나타납니다.)

 

위와 같은 패키지 암호 설정 창에서 지정한 암호를 입력한 후, 패키지를 실행하면 정상적으로 수행됩니다.

 

 

 

 

 

[방법 2]  패키지의 ProtectionLevelServerStorage로 임시 변경한 후, 패키지를 실행할 SQL Server에 저장시킵니다.

 

ProtectionLevelServerStorage로 설정하는 것은 패키지의 보안과 관련된 사항을 SQL Server에게 관리하도록 넘기는 것입니다. 이 때, 주의할 것은 이 설정으로 변경한 경우에는 패키지는 파일 형태로 저장할 수 없고 SQL Server로만 저장할 수 있습니다.

개발 화면의 상단 파일(F) 메뉴 중, 다른 이름으로 ….dtsx의 복사본 저장(C) 메뉴를 클릭합니다.

 

 

패키지 위치를 SQL Server로 지정한 후, 인증 유형을 설정합니다. Windows 인증이나 SQL Server 인증이나 상관없이 연결할 수 있는 적절한 권한(msdb db_dtsadmin 역할 또는 db_dtsltduser 역할)이 있는 계정으로 지정하면 됩니다. 패키지 경로(K) 부분에서는 저장할 패키지 명을 지정합니다. 옆의 ... 버튼을 눌러 폴더 형식과 같은 적절한 경로를 지정할 수도 있습니다.

 

 

, 이 때 SQL Server에 저장시킨 후, 다시 로컬 파일로 저장할 경우 저장이 되지 않습니다. 이는 앞서 언급한 바와 같이 ProtectionLevelServerStorage로 설정하였기 때문입니다. 따라서 패키지를 별도의 파일로 저장하기 위해서는 ProtectionLevel의 속성값을 ServerStorage 이외의 값으로 변경하셔야 합니다.

 

이후, SQL Agent에서 패키지를 실행하는 작업을 등록할 경우, 다음 그림과 같이 패키지 원본SQL Server로 지정한 후, 저장한 패키지를 선택하면 됩니다.

 

 

 

 

 

 

 

[방법 3]  SQL Agent의 작업 중, 데이터 원본 탭에서 DB 연결에 대한 Password를 지정합니다.

패키지를 실행하는 작업 단계 중, 데이터 원본 탭을 클릭하면 패키지에서 이용하는 데이터 원본이 표시됩니다. 이 때, SQL 인증을 사용하는 DB 연결을 선택한 후, 연결 문자열 부분에 Password=... 구문을 추가합니다.

) Data Source=dshan\ss2005;User ID=sa;Initial Catalog=tempdb;Provider=SQLOLEDB.1;Auto Translate=False;Password=dbpassword

 

 

 

[방법 4]  DB 정보를 포함하는 구성 파일을 만든 후, 이를 구성 탭에서 지정합니다.

패키지 내의 모든 개체에 대한 속성은 구성 이라는 기능으로 지정할 수 있습니다. 또한 구성 정보는 파일로 저장할 수도 있습니다.

(구성에 관한 자세한 내용은 다음 링크의 강좌를 참고하시기 바랍니다.

http://www.sqlleader.com/mboard.asp?exec=view&strBoardID=SS2005SSIS&intSeq=454)

 

패키지에서 사용하는 DB 연결 정보를 별도의 구성 파일로 만든 후에 이 구성 파일을 지정하는 식으로 문제를 해결할 수 있습니다. 예를 들어 다음과 같은 구성 파일을 생성합니다.

) D:\dbconnectionstring.dtsconfig 라는 이름으로 구성 파일 생성

 <?xml version="1.0"?>

<DTSConfiguration>

 

  <Configuration ConfiguredType="Property" Path="\Package.Connections[.\ss2005.tempdb].Properties[ConnectionString]" ValueType="String">

    <ConfiguredValue>Data Source=dshan\ss2005;User ID=sa;Initial Catalog=tempdb;Provider=SQLOLEDB.1;Auto Translate=False;Password=dbpassword;</ConfiguredValue>

  </Configuration> 

</DTSConfiguration>

 

이 구성 파일은 .\ss2005.tempdb라는 연결에 대해 ConnectionString 정보를 가지고 있는 구성 파일입니다. 이 구성 파일을 SQL Agent의 작업 단계 설정 중 구성 부분에서 추가합니다.

 

 

이 방식은 프로젝트 단위의 여러 패키지가 존재하며, 각 패키지에서 같은 DB 정보를 이용할 때 일괄적으로 관리할 수 있는 장점이 있습니다. 또한, 직접 데이터 원본 부분에서 password를 지정해주는 대신 별도의 파일에 기록함으로써 DB Password의 노출을 방지할 수 있습니다. (파일에 대한 접근 권한은 SQL Agent 실행 계정 및 Administrator에게만 부여하도록 Windows 환경에서 설정하면 됩니다.)

 

 

 

 

[방법 5] 패키지의 ProtectionLevelDontSaveSensitive로 변경한 후, DB 연결 정보의 값은 식을 이용하여 지정하는 방식으로 저장합니다. 여기서 ProtectionLevelDontSaveSensitive로 설정한 것은 다른 사용자가 패키지를 열었을 때에도 보안 경고를 발생시키지 않도록 하기 위함입니다.

 

우선 패키지의 보안 수준을 DontSaveSensitive로 변경합니다.

 

연결 관리자에서 SQL 인증을 이용하는 연결을 선택한 후, 속성의 Expression 부분에서 ... 버튼을 클릭하여 해당 연결의 속성에 대한 식을 지정합니다.

 

속성 식 편집기에서 ConnectionString 속성을 선택하고 해당 연결에 대한 연결 문자열을 직접 지정합니다. 이 때, 연결 문자열에 Password를 포함해서 지정해야 합니다.

 

[참고] 직접 식으로 지정하는 대신, 연결 문자열을 포함하는 String형 변수를 지정하고, 속성 식에서 이 변수를 사용하도록 설정할 수도 있습니다.

 

 

본 게시판에 실린 글은 누구나 복사하셔서 이용하셔도 되지만, 반드시 출처(SQLLeader.com) 링크를 밝혀주셔야 합니다.

 

 

 

강다혁 좋은 글 감사합니다. 2007/06/09
황재순 안녕하세요. 좋은자료로 많은 도움을 얻고 있습니다. 위의 방법을 다 쓰고도 문제가 풀리지 않아서 글을 남깁니다.

다른 컴퓨터에 있는 엑셀파일을 불러올때 서버에이전트가 작동하지않습니다. 수동으로 실행시키면 문제없이 다른컴에 있는 파일을 불러옵니다. 그러나 시간을 맞춰놓고 에이전트를 실행하면 실패로 끝납니다. 왜 서버에이전트가 자동으로 실행을 못시키는 것일까요?

감사합니다.



2008/03/03
한대성 파일 공유는 약간 또 다른 이슈 사항이 있습니다. 만약 제어판 => 서비스에서 SQL Agent 시작 계정을 변경할 수 있다면, 현재 로그인 하신 계정으로 변경하신 후에 실행해 보시기 바랍니다. 자세한 사항은 질문으로 올려주세요~^^(답변 드릴려고 했는데 지워졌더라구요..) 2008/03/03
황재순 한대성님 너무 감사합니다. Q&A에 질문 다시 올렸습니다. 부디 꼭 답변 바랍니다.
참고로 제 메일 주소를 남깁니다. nara21c@hotmail.com
감사합니다.
2008/03/03
김성진 좋은 글 감사드립니다~ 2008/09/18
반응형
반응형


SSIS, Integration Services, 데이터 통합 서비스..

 

이것들이 무엇인지 모르는 분들을 위해 다음과 같이 간략한 Q&A 형태로 작성해 보았습니다. SSIS를 처음 접하시는 분, SSIS에 대해 궁금해 하시는 분들께 조금이나마 도움이 되었으면 합니다.

 

내용은 계속해서 추가할 예정입니다.                                                                               - 에이디컨설팅 한대성-

 

 

 

 

 

Q) SSIS가 뭡니까?

SSIS SQL Server 2005 Integration Services의 약자로써, 간단하게는 데이터 가져오기/내보내기와 같은 데이터 이관 작업에서부터 이기종 데이터 통합 및 처리, 데이터베이스 관리 작업 등을 수행할 수 있는 서비스 입니다.

 

 

Q) SQL 2000 DTS와 비슷하나요?

SSIS SQL 2000 DTS의 업그레이드 버전입니다. DTS(데이터 변환 서비스) SQL 2005에서는 SSIS(데이터 통합 서비스)로 이름이 변경되었으며, 많은 점들이 향상되었습니다.

 

 

Q) SSIS 패키지가 무엇인가요?

SQL Server의 저장 프로시저와 같이 사용자가 원하는 작업들을 정의해 놓은 실행 개체가 패키지 입니다. 하나의 패키지 내에는 테이블 생성, 데이터 전송, 메일 보내기 등과 같은 여러 작업들이 포함됩니다.

 

 

Q) SSIS를 사용하기 위해서는 SQL Server 2005가 설치되어야 하나요?

SSIS SQL Server 2005에 포함된 서비스이긴 하지만 SQL 엔진(SQL Server Database Services)이 반드시 설치되어야 할 필요는 없습니다. SQL Server 2005에는 SQL Server 엔진뿐만 아니라 Integration Services, Analysis Services, Reporting Services, Notification Services 등과 같은 여러 서비스들이 포함되어 있습니다.

SQL 2000 DTS는 반드시 SQL이 실행 중이어야만 사용 가능했지만, SSIS SQL이 실행 중일 필요는 없습니다. 따라서 단순히 패키지를 실행시키기 위해서는 Integration Services만 설치되어 있으면 됩니다. 패키지를 작성하려면 다음과 같이 고급(D)를 누르면 나타나는 기능 선택 창에서 Business Intelligence Development Studio가 설치되어야 합니다.

 

 

Q) SQL Server Database Services가 반드시 실행 중이어야 하나요?

SQL Server 2005에서는 Integration Services Database Services가 분리되었습니다. , Database Services가 실행 중이지 않더라도 패키지를 실행하거나 관리할 수 있습니다.

 

 

Q) SSIS 패키지는 무엇으로 만드나요?

SQL 2000 DTS 패키지는 엔터프라이즈 관리자(Enterprise Manager)에서 만들었습니다. , EM에서 패키지를 만들고 관리까지 모두 수행하였습니다. 하지만, SQL 2005 SSIS에서는 패키지를 만들기 위해서는 Visual Studio를 이용해야 합니다. 이러한 점은 SSIS 패키지뿐만 아니라 Analysis Services Cube Dimension, Reporting Services의 보고서를 만들 때도 마찬가지입니다.

 

 

Q) 그러면 SQL Server 2005 외에도 추가로 Visual Studio를 사야 하나요?

별도로 구매할 필요는 없습니다. SQL Server 2005를 설치하는 과정에서 클라이언트 구성 요소 중 Business Intelligence Development Studio를 선택하게 되면 자동으로 Visual Studio가 설치됩니다. 이 때 설치되는 Visual Studio SQL 2005 Integration Services 패키지, Analysis Services의 큐브 및 디멘젼, Reporting Services의 보고서를 만들 수 있는 기능만 포함되어 있습니다.

 

 

Q) 패키지를 만들기 위해서는 SQL 쿼리 외에 추가로 알아야 할 언어가 있습니까?

별도로 알아야 할 언어는 없습니다. 또한 SQL과 관련된 작업을 수행하지 않는다면 SQL 쿼리를 몰라도 됩니다. 기본적으로 제공되는 다양한 형태의 작업 개체 중 원하는 작업을 선택해서 끌어 놓은 후, 필요한 설정만 해주면 됩니다.

VB.NET을 잘 안다면 스크립트 작업을 이용해서 다양한 작업을 추가로 구현할 수 있기 때문에 편하긴 하지만 반드시 알아야 할 필요는 없습니다.

 

 

Q) MSSQL 데이터만 사용할 수 있나요?

MSSQL 뿐만 아니라 Oracle, Sybase, DB2 등과 같은 다양한 형태의 데이터를 직접 이용할 수도 있으며 텍스트 파일, XML 파일, 엑셀 파일 등과 같은 형태의 데이터도 모두 사용할 수 있으며, 이러한 형태로 저장도 가능합니다.

 

 

Q) SSIS 패키지는 어디에 저장됩니까?

SSIS 패키지는 기본적으로 파일 형태로 존재하며, 확장자는 dtsx 입니다.

이 파일은 XML 형태로 되어 있습니다. 사용자가 원하는 위치에 패키지 파일이 저장됩니다. 이렇게 만든 패키지 파일을 서버로 복사해서 수행하거나, 또는 SQL Server의 테이블로 바로 저장시킬 수 있습니다. (SQL Server 2005 msdb.dbo.sysdtspackages90 테이블에 저장)

 

 

Q) SSIS 패키지는 어떻게 실행시키나요?

우선, 개발 툴인 Visual Studio에서 바로 실행시킬 수 있습니다. , 이 때에는 Integration Services가 실행 중일 필요는 없습니다.

또한 패키지 파일(.dtsx)를 더블 클릭하면 패키지를 실행시킬 수 있는 전용 유틸리티가 실행됩니다. (DTEXECUI.exe) 이 프로그램에서 연결 정보나 옵션 등을 설정하여 수행할 수 있습니다.

이 외에도 콘솔 모드(도스 창)에서 실행시킬 수 있는 dtexec.exe라는 유틸리티를 이용해서 패키지를 수행할 수 있습니다. 패키지를 예약해서 수행하기 위해서는 SQL Server 2005 에이전트에서 작업으로 등록해서 수행하게 됩니다. 작업으로 등록할 때 유형에서 SQL Server Integration Services 패키지를 선택한 후 실행시킬 패키지를 지정하면 됩니다. 만약 SQL Server 2005 Agent를 사용하지 않는다면, 윈도우 예약 작업에서 다음과 같은 형태의 명령으로 실행시킬 수도 있습니다.

 

) dtexec /FILE "D:\SSIS\Sample.dtsx"  /CHECKPOINTING OFF  /REPORTING EWCDI

 

 

 

 

 

 
본 글에서 소개되는 내용은 작성자의 개인적인 의견이며, Microsoft사에서 제공하는 공식적인 사항은 아닙니다.
최종 수정일 : 2007.02.10
반응형
반응형

예제 패키지 파일 이용하기

 

안녕하세요. 한대성입니다.

 

대부분 다 잘 아시겠지만 익숙하지 않은 분들이 있을 것 같아 SSIS 관련 자료 중에 첨부한 예제 파일 사용법을 간략히 설명 드리겠습니다.

 

위의 예제를 이용하여 설명하겠습니다.

우선 예제 파일을 임의의 폴더에 다운 받습니다. (여기서는 C:\SSISPackageDown\ 이용)

 

다운 받은 dtsx 패키지 파일을 더블 클릭하면 자동으로 패키지 실행 유틸리티(DTEXECUI.exe)가 실행됩니다.

이 프로그램은 패키지를 실행하기 위한 것이며, 패키지를 수정하거나 내용을 볼 수 있는 기능은 아닙니다.

 

 

1. 편집 기능으로 열기

 

dtsx 패키지 파일을 더블 클릭하는 대신 마우스 오른쪽 버튼을 클릭하면 다음 그림과 같이 편집(E) 메뉴가 나타납니다.

이를 선택하면 해당 dtsx 패키지 파일을 Visual Studio의 프로젝트에 포함시키지 않고 바로 조회하거나 수정할 수 있습니다.

     단순히 패키지의 내용을 조회할 때 이용합니다.

     디버깅 단계 없이 패키지를 수정할 때 이용합니다.
=
패키지를 수정하고 저장할 수는 있지만, 개발 환경에서 실행시킬 수는 없습니다.

 

 

2. 프로젝트에 포함하여 열기

 

[시작]à[프로그램]à[SQL Server 2005]à[SQL Server Business Intelligence Development Studio]를 선택한 후, Integration Services 패키지를 선택하여 빈 패키지를 생성하거나 기존의 Integration Services 패키지를 엽니다.

 

솔루션 탐색기SSIS 패키지 부분을 선택한 후, 마우스 오른쪽 버튼을 클릭하여 나타나는 메뉴 중 기존 패키지 추가(X)를 선택한 후,

 

기존 패키지의 복사본 추가 창에서 패키지 위치(L)을 파일 시스템으로 변경하고 아래의 패키지 경로(K)에서 추가할 패키지를 지정하여 패키지를 추가합니다.

 

추가한 패키지를 더블 클릭하여 엽니다. 이 때, 패키지의 연결 정보가 잘못된 경우에는 유효성 검사 단계 진행 후 다음과 같이 유효성 경고가 나타납니다. 이것은 패키지가 잘못되어서 발생되는 에러는 아니며, 패키지의 연결 정보를 현재의 환경 정보에 맞게 수정하면 해결됩니다.

 

패키지의 연결 관리자에 지정된 연결 정보들을 확인한 후 현재 환경에 맞게 수정합니다.

 

) “엑셀파일연결에서 지정된 파일 경로를 변경

 

연결 정보를 변경해준 후, 그대로 패키지를 실행시켜 보거나 또는 솔루션 탐색기에서 해당 패키지를 선택한 후, 오른쪽 마우스를 클릭해서 나타나는 메뉴 중 업그레이드로 다시 로드를 선택하면 현재 설정된 정보로 다시 로딩하며 패키지의 유효성 경고는 사라집니다.

 

 

     기존 SSIS 프로젝트에 포함시키는 방식으로 패키지를 조회 및 편집합니다.

     기존 패키지 추가 메뉴를 이용하여 추가하거나 직접 패키지 파일을 드레그(Drag)하여 솔루션 탐색기의 SSIS 패키지 메뉴 부분에 드롭(Drop)하는 방식으로도 추가시킬 수 있습니다.

     패키지를 수정한 후 실행도 시킬 수 있습니다.

 

 

반응형
반응형


[실습 2] 루핑(Looping) 추가하기

 

1.     실습 1의 패키지 복사

A.        Business Intelligence Development Studio를 아직 열지 않은 경우 시작을 클릭하고 모든 프로그램, Microsoft SQL Server 2005를 차례로 가리킨 다음 Business Intelligence Development Studio를 클릭합니다.

B.       파일 메뉴에서 열기, 프로젝트/솔루션, SSIS Tutorial 폴더, 열기를 차례로 클릭한 후 SSIS Tutorial.sln을 두 번 클릭합니다.

C.       솔루션 탐색기에서 Lesson 1.dtsx를 마우스 오른쪽 단추로 클릭한 후 복사를 클릭합니다.

D.       솔루션 탐색기에서 SSIS 패키지를 마우스 오른쪽 단추로 클릭한 후 붙여넣기를 클릭합니다.

E.        기본적으로 복사된 패키지의 이름은 Lesson 2.dtsx가 됩니다.

F.        솔루션 탐색기에서 Lesson 2.dtsx를 두 번 클릭하여 패키지를 엽니다.

 

 

2.     Foreach 루프 컨테이너 추가 및 구성

A.        Business Intelligence Development Studio에서 제어 흐름 탭을 클릭합니다.

B.       도구 상자의 제어 흐름 항목에서 Foreach 루프 컨테이너제어 흐름 탭의 디자인 화면으로 끌어 놓습니다.

C.       새로 추가한 Foreach 루프 컨테이너를 마우스 오른쪽 단추로 클릭하고 편집을 선택합니다.

D.       Foreach 루프 편집기 대화 상자의 일반 페이지에서 이름에 Foreach File in Folder를 입력합니다.

 

 

3.     Foreach 루프 컨테이너에서 열거자 구성

A.        컬렉션을 클릭합니다.

B.       컬렉션 페이지의 Enumerator 속성에서 Foreach File 열거자를 선택합니다.

C.       열거자 구성 그룹에서 찾아보기를 클릭합니다.

D.       폴더 찾아보기 대화 상자에서 C:\SSIS_Demo\Tutorial\를 선택합니다.

E.        파일 상자에 Currency_*.txt를 입력합니다.

 

 

4.     사용자 정의 변수에 열거자를 매핑

A.        변수 매핑을 클릭합니다.

B.       변수 매핑 페이지의 변수 열에서 빈 셀을 클릭하고 <새 변수...>를 선택합니다.

C.       변수 추가 대화 상자에서 이름varFileName을 입력합니다.

D.       확인을 클릭합니다.

E.        확인을 다시 클릭하여 Foreach 루프 편집기 대화 상자를 종료합니다.

 

 

5.     루프에 데이터 흐름 작업 추가

A.        Foreach File in Folder로 이름이 바뀐 Foreach 루프 컨테이너로 샘플 데이터 추출 데이터 흐름 작업을 끌어 놓습니다.

 

 

6.     플랫 파일 연결 관리자 수정

A.        연결 관리자 창에서 Sample Flat File Source를 클릭합니다.

B.       속성 창에서 Expressions의 빈 셀을 클릭한 다음 줄임표 단추 ()를 클릭합니다.

C.       속성 식 편집기 대화 상자의 속성 열에서 ConnectionString을 선택합니다.

D.       식 열 옆에 있는 줄임표 단추 ()를 클릭하여 식 작성기 대화 상자를 엽니다.

E.        식 작성기 대화 상자에서 변수 노드를 확장합니다.

F.        사용자::varFileName 변수를 상자로 끌어 놓습니다.

G.       확인을 클릭하여 식 작성기 대화 상자를 닫습니다.

H.       다시 확인을 클릭하여 속성 식 편집기 대화 상자를 닫습니다.

 

 

7.     패키지 테스트

A.        디버그 메뉴에서 디버깅 시작을 클릭합니다.

B.       패키지가 실행됩니다. 출력 창에서 각 루프 상태를 확인하거나 진행률 탭을 클릭하여 확인할 수 있습니다. 예를 들어 Currency_VEB.txt 파일에서 대상 테이블로 1097개의 행이 추가되었음을 확인할 수 있습니다.

C.       패키지의 실행이 완료된 후에 디버그 메뉴에서 디버깅 중지를 클릭합니다.

 
반응형
반응형

SSIS 패키지 수행하기

 

SSIS 패키지를 만든 후, 이를 수동으로 수행하는 방법 및 SQL Agent에 등록시켜 수행하는 방법에 대해 간략히 설명 드리겠습니다. SSIS에 대해 설명하기 전에 SQL Server 2000 DTS에서 수행했던 방법을 잠시 살펴보겠습니다.

 

2000 DTS Enterprise Manager(EM)에서 작성한 후, 해당 패키지 명을 마우스 오른쪽 클릭하면 패키지 실행 및 패키지 예약 옵션이 나타납니다.

SQL Agent에 등록하는 경우, 패키지 예약(S)를 선택하면 다음과 같은 화면이 나오며, 일정 등을 설정하면 바로 등록이 됩니다.

2005 SSIS는 이와는 약간 다릅니다.

 

SQLLeader.com SSIS게시판에 등록되어 있는 실습 패키지1을 이용하여 설명하겠습니다.

SSIS는 기본적으로 확장자가 .dtsx 인 파일로 존재합니다. 2000 DTS에서와 같이 msdb를 이용할 수도 있지만, 파일로 저장하는 방식이 기본값입니다. 여기서는 D:\SSIS\Lesson1.dtsx 라는 파일입니다.

 

 

패키지를 수동으로 수행하는 방법

패키지를 수동으로 실행하는 방법에는 크게 세가지가 있습니다. 첫 번째는 개발 툴인 BIDS(SQL Server Business Intelligence Development Studio)에서 직접 실행하는 방법입니다.

두 번째 방법은 패키지 실행 유틸리티라고 하는 DTEXECUI를 이용하는 방법입니다. [시작] à [실행] 에서 dtexecui.exe를 입력하여 이를 실행시킨 후, 수행하고자 하는 패키지를 열어서 수행하는 방법이 있으며, 간단하게는 수행하고자 하는 패키지 파일(.dtsx)을 더블클릭 하여 dtexecui를 실행시킬 수 있습니다.

위의 그림에서 보는 바와 같이, 구성, 명령 파일, 연결 관리자, 실행 옵션, 보고, 로깅, 값 설정, 확인, 명령줄과 같이 여러 옵션을 설정할 수 있는 탭으로 구성이 되어 있습니다. 각각의 설정화면에 대해서는 다음에 자세히 설명하도록 하겠습니다.

연결 관리자 탭에서 적절한 연결 설정을 조정할 수 있으며, 보고 탭에서 수행될 때 나타날 정보의 수준 등을 설정할 수 있습니다. 이런 설정을 마친 후, 실행 버튼을 누르면 해당 패키지가 실행이 됩니다.

 

다른 방법을 수행하기에 앞서 위의 그림에서 명령 탭을 한 번 자세히 보고 넘어가겠습니다.

몇 가지 설정을 한 후에 명령줄 탭을 보면 그림과 같이 나타납니다. 명령줄은 패키지를 수행하는 세 번째 방법인 dtexec.exe 에서 사용할 수 있는 옵션입니다.

 

dtexec.exe라는 패키지 수행 프로그램이 있으며, 이는 dtexecui.exe 와는 달리 콘솔 모드에서 수행이 됩니다.

여러 옵션을 지정하여 패키지를 수행하게 되는데, 이러한 옵션을 수동으로 다 지정한다는 것은 사실상 불가능합니다. 대신 앞에서 말한 명령줄 옵션에 나오는 부분을 바로 붙여서 수행하면 됩니다.

 

이상으로 세 가지 방법으로 패키지를 실행하는 방법을 말씀 드렸습니다. 성능 상으로는 콘솔 모드에서dtexec.exe를 이용하여 여러 정보들을 나타내지 않는 옵션으로 수행하는 것이 가장 우수합니다. (조만간 관련된 글 올리겠습니다.)

 

 

패키지를 SQL Agent에 등록하는 방법

Management Studios 에서 SQL Server 에이전트 à 작업에서 새 작업(N)을 클릭합니다.

 

작업 속성에서 적절한 이름과 소유자를 지정합니다.

 

단계 탭에서 새로 만들기를 클릭한 후, 유형에서 SQL Server Integration Service 패키지를 선택합니다.

 

이후, 패키지 원본에서 파일 시스템을 선택하고 패키지를 지정합니다.

구성, 명령 파일 등의 탭은 앞서 수동으로 실행하기에서 패키지 실행 유틸리티(dtexecui)에서와 동일합니다.

 

패키지 옵션 등을 설정하신 후, 작업 속성 탭에서 적절한 일정을 등록하신 후, 확인을 누르시면 작업으로 등록이 됩니다.

 

 

 

운영 방안

각각의 환경에 따라 운영하는 방법이 다르겠지만, 필자 개인적인 생각으로의 운영 방안에 대해 언급하겠습니다.

파일 형태로 패키지를 관리하는 경우, 패키지를 수정하는 경우에 편리합니다. msdb에 저장되어 있는 경우, SSIS 패키지 가져오기 마법사를 이용하여 해당 패키지를 불러오는 단계를 거쳐야 합니다. 파일로 존재하는 경우, 파일 시스템의 보안 시스템을 이용할 수도 있습니다.

하지만, 단점으로는 별도의 파일로 존재하기 때문에, 실수로 해당 파일을 삭제한다든지, 이동시키는 경우, SQL Agent의 작업이 실패 날 수 있습니다.

따라서, 개발이 완료되어 변경이 자주 발생하지 않는 경우라면, 패키지 파일(.dtsx) msdb로 저장시키고(저장 옵션에서 파일 시스템 대신 SQL Server를 선택), SQL Agent에 작업으로 등록할 때 패키지 원본에서 파일 시스템 대신 SQL Server로 지정하면 됩니다.

 

SQL Server 2005에서는 성능 카운터에도 SSIS와 관련된 카운터가 추가되어 있습니다.

[SQL Server:SSIS Pipeline] [SQL Server:SSIS Service]개체가 있으며 각 개체에 세부적인 카운터들이 있기 때문에, 이를 잘 이용하면 수행되는 패키지에 대한 모니터링을 적절히 할 수 있습니다.

반응형

+ Recent posts

반응형