사용자 지정 개체 빌드, 배포 및 디버깅
Integration Services의 사용자 지정 개체에 대한 코드를 작성한 후에는 어셈블리를 빌드하여 배포하고 패키지에서 사용할 수 있도록 SSIS 디자이너에 통합한 다음 테스트 및 디버깅을 수행해야 합니다.
Integration Services의 사용자 지정 개체 빌드, 배포 및 디버깅 단계
개체의 사용자 지정 기능을 작성한 후에는 이를 테스트하고 사용자가 사용할 수 있도록 해야 합니다. 이 단계는 Integration Services용으로 만들 수 있는 모든 유형의 사용자 지정 개체에서 매우 비슷합니다.
사용자 지정 개체를 빌드, 배포 및 디버깅할 때 따라야 하는 단계는 다음과 같습니다.
생성할 어셈블리를 강력한 이름으로 서명합니다.
어셈블리를 빌드합니다.
어셈블리를 적절한 Integration Services 폴더로 이동하거나 복사하여 배포합니다.
GAC(전역 어셈블리 캐시)에 어셈블리를 설치합니다.
개체가 태스크 또는 데이터 흐름 구성 요소인 경우 도구 상자에 개체를 추가합니다.
필요한 경우 배포 문제를 해결합니다.
코드를 테스트하고 디버깅합니다.
어셈블리 서명
공유하려는 어셈블리는 전역 어셈블리 캐시에 설치해야 합니다. 전역 어셈블리 캐시에 추가된 어셈블리는 Business Intelligence Development Studio와 같은 응용 프로그램에서 사용할 수 있습니다. 전역 어셈블리 캐시에 어셈블리를 추가하려면 어셈블리를 강력한 이름으로 서명하여 해당 어셈블리가 전역적으로 고유함을 보장해야 합니다. 강력한 이름의 어셈블리에는 어셈블리의 이름, culture, 공개 키 및 버전 번호를 포함하는 정규화된 이름이 있습니다. 런타임에서는 이 정보를 사용하여 어셈블리를 찾고 같은 이름의 다른 어셈블리와 구별합니다.
강력한 이름으로 어셈블리를 서명하려면 먼저 공개/개인 키 쌍이 있어야 하며 이 키 쌍이 없으면 만들어야 합니다. 이 암호화 키 쌍은 빌드할 때 강력한 이름의 어셈블리를 만드는 데 사용합니다.
강력한 이름과 어셈블리를 서명할 때 따라야 하는 단계에 대한 자세한 내용은 .NET Framework SDK 설명서의 다음 항목을 참조하십시오.
강력한 이름의 어셈블리
공개/개인 키 쌍 만들기
방법: 강력한 이름으로 어셈블리 서명
Visual Studio에서는 빌드할 때 어셈블리를 강력한 이름으로 서명하기가 쉽습니다. 프로젝트 속성 대화 상자에서 서명 탭을 선택하고 어셈블리 서명 옵션을 선택한 다음 키 파일(.snk)의 경로를 지정하면 됩니다.
어셈블리 빌드
프로젝트를 서명한 후에는 BI Development Studio의 빌드 메뉴에서 사용할 수 있는 명령으로 프로젝트 또는 솔루션을 빌드하거나 다시 빌드해야 합니다. 솔루션에 사용자 지정 사용자 인터페이스를 위한 별도의 프로젝트가 포함된 경우 이 프로젝트도 강력한 이름으로 서명해야 하며 이 프로젝트를 솔루션과 동시에 빌드할 수 있습니다.
어셈블리를 배포하고 전역 어셈블리 캐시에 설치하는 다음 두 단계를 수행하는 데 가장 편리한 방법은 Visual Studio에서 이러한 단계를 빌드 후 이벤트로 스크립팅하는 것입니다. 빌드 이벤트는 프로젝트 속성의 컴파일 페이지(Visual Basic 프로젝트의 경우)나 빌드 이벤트 페이지(C# 프로젝트의 경우)에서 사용할 수 있습니다. gacutil.exe와 같은 명령 프롬프트 유틸리티에는 전체 경로가 필요합니다. 공백이 포함된 경로와 공백이 포함된 경로로 확장되는 $(TargetPath) 등의 매크로는 모두 따옴표로 묶어야 합니다.
다음은 사용자 지정 로그 공급자에 대한 빌드 후 이벤트 명령줄의 예입니다.
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\100\DTS\LogProviders "
어셈블리 배포
SSIS 디자이너에서는 SQL Server Integration Services가 설치될 때 만들어진 일련의 폴더에 있는 파일을 열거하여 패키지에서 사용할 수 있는 사용자 지정 개체를 찾습니다. 기본 SQL Server 설치 설정을 사용한 경우 이러한 폴더는 C:\Program Files\Microsoft SQL Server\100\DTS에 있습니다. 그러나 사용자 지정 개체의 설치 프로그램을 만들 경우에는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath 레지스트리 키의 값을 검사하여 이 폴더의 위치를 확인해야 합니다.
다음과 같은 두 가지 방법으로 폴더에 어셈블리를 추가할 수 있습니다.
빌드 후 컴파일된 어셈블리를 적절한 폴더로 이동하거나 복사합니다. 편의상 빌드 후 이벤트에 복사 명령을 포함할 수 있습니다.
어셈블리를 적절한 폴더에 직접 빌드합니다.
C:\Program Files\Microsoft SQL Server\100\DTS에 있는 다음 배포 폴더는 다양한 유형의 사용자 지정 개체에 사용됩니다.
사용자 지정 개체 |
배포 폴더 |
---|---|
태스크 |
Tasks |
연결 관리자 |
Connections |
로그 공급자 |
LogProviders |
데이터 흐름 구성 요소 |
PipelineComponents |
[!참고]
이러한 폴더에 복사된 어셈블리는 사용 가능한 태스크, 연결 관리자 등의 열거형을 지원합니다. 따라서 사용자 지정 개체의 사용자 지정 사용자 인터페이스만 포함된 어셈블리는 이러한 폴더에 배포하지 않아도 됩니다.
전역 어셈블리 캐시에 어셈블리 설치
GAC(전역 어셈블리 캐시)에 태스크 어셈블리를 설치하려면 명령줄 도구 gacutil.exe를 사용하거나 어셈블리를 %system%\assembly 디렉터리에 끌어 놓습니다. 편의상 빌드 후 이벤트에 gacutil.exe에 대한 호출을 포함할 수도 있습니다.
다음 명령은 gacutil.exe를 사용하여 MyTask.dll이라는 구성 요소를 GAC에 설치합니다.
gacutil /iF MyTask.dll
새 버전의 사용자 지정 개체를 설치한 후에는 SSIS 디자이너를 닫았다가 다시 열어야 합니다. 전역 어셈블리 캐시에 이전 버전의 사용자 지정 개체를 설치한 경우 새 버전을 설치하려면 먼저 이전 버전을 제거해야 합니다. 어셈블리를 제거하려면 gacutil.exe를 실행하고 /u 옵션을 사용하여 어셈블리 이름을 지정합니다.
전역 어셈블리 캐시에 대한 자세한 내용은 ".NET Framework 도구"의 "전역 어셈블리 캐시 도구(Gactutil.exe)"를 참조하십시오.
도구 상자에 태스크 또는 데이터 흐름 구성 요소 추가
사용자 지정 개체를 배포하고 전역 어셈블리 캐시에 설치한 후에는 SQL Server Integration Services에 포함된 개체와 마찬가지로 Business Intelligence Development Studio에서 해당 사용자 지정 개체를 사용할 수 있습니다. 단, 도구 상자에 사용자 지정 개체가 명시적으로 추가되어 있어야 합니다.
도구 상자에 사용자 지정 구성 요소를 추가하려면
도구 상자를 마우스 오른쪽 단추로 클릭한 다음 항목 선택을 클릭합니다.
도구 상자 항목 선택 대화 상자에서 SSIS 제어 흐름 항목 탭(태스크의 경우)이나 SSIS 데이터 흐름 항목 탭(데이터 흐름 구성 요소의 경우)을 클릭합니다.
구성 요소 옆의 확인란을 클릭한 다음 확인을 클릭합니다.
[!참고]
구성 요소가 목록에 표시되지 않으면 찾아보기를 클릭하여 구성 요소를 직접 찾을 수 있습니다. 그러나 이 경우 구성 요소가 제대로 설치되어 있지 않을 수도 있습니다.
배포 문제 해결
사용자 지정 개체가 도구 상자나 사용 가능한 개체 목록에 나타나지만 패키지에 추가할 수 없는 경우 다음 단계를 수행해 봅니다.
전역 어셈블리 캐시에 여러 버전의 구성 요소가 있는지 확인합니다. 전역 어셈블리 캐시에 여러 버전의 구성 요소가 있는 경우 디자이너에서 구성 요소를 로드하지 못할 수 있습니다. 전역 어셈블리 캐시에서 어셈블리의 모든 인스턴스를 삭제하고 어셈블리를 다시 추가합니다.
배포 폴더에 어셈블리의 단일 인스턴스만 있는지 확인합니다.
도구 상자를 다시 설정합니다.
Visual Studio를 devenv.exe에 연결하고 중단점을 설정한 다음 초기화 코드를 단계별로 실행하여 예외가 발생하지 않는지 확인합니다.
코드 테스트 및 디버깅
사용자 지정 개체의 런타임 메서드를 가장 간단하게 디버깅하려면 사용자 지정 개체를 빌드하고 해당 구성 요소를 사용하는 패키지를 실행한 후 Visual Studio에서 dtexec.exe를 시작합니다.
Validate 메서드와 같은 구성 요소의 디자인 타임 메서드를 디버깅하려면 Visual Studio의 두 번째 인스턴스에서 해당 구성 요소를 사용하는 패키지를 열고 devenv.exe 프로세스에 연결합니다.
SSIS 디자이너에서 패키지가 열려 실행될 때 구성 요소의 런타임 메서드도 디버깅하려면 DtsDebugHost.exe 프로세스에도 연결할 수 있도록 패키지 실행을 강제로 일시 중지해야 합니다.
dtexec.exe에 연결하여 개체의 런타임 메서드를 디버깅하려면
이 항목에 설명된 대로 디버그 구성 요소에서 프로젝트를 서명 및 빌드하고 배포한 다음 전역 어셈블리 캐시에 설치합니다.
프로젝트 속성의 디버그 탭에서 시작 동작으로 시작 외부 프로그램을 선택하고 기본적으로 C:\Program Files\Microsoft SQL Server\100\DTS\Binn에 설치된 dtexec.exe를 찾습니다.
명령줄 옵션 입력란의 시작 옵션에 해당 구성 요소를 사용하는 패키지를 실행하는 데 필요한 명령줄 인수를 입력합니다. 명령줄 인수는 /F[ILE] 스위치와 그 다음에 나오는 .dtsx 파일의 경로 및 파일 이름으로 구성되는 경우가 많습니다. 자세한 내용은 dtexec 유틸리티(SSIS 도구)를 참조하십시오.
원본 코드에서 구성 요소의 런타임 메서드 중 적절한 위치에 중단점을 설정합니다.
프로젝트를 실행합니다.
Business Intelligence Development Studio에 연결하여 사용자 지정 개체의 디자인 타임 메서드를 디버깅하려면
이 항목에 설명된 대로 디버그 구성 요소에서 프로젝트를 서명 및 빌드하고 배포한 다음 전역 어셈블리 캐시에 설치합니다.
원본 코드에서 사용자 지정 개체의 디자인 타임 메서드 중 적절한 위치에 중단점을 설정합니다.
Visual Studio의 두 번째 인스턴스를 열고 해당 사용자 지정 개체를 사용하는 패키지가 포함된 Integration Services 프로젝트를 로드합니다.
Visual Studio의 첫 번째 인스턴스에서 디버그 메뉴의 프로세스에 연결을 선택하여 패키지가 로드되는 devenv.exe의 두 번째 인스턴스에 연결합니다.
Visual Studio의 두 번째 인스턴스에서 패키지를 실행합니다.
Business Intelligence Development Studio에 연결하여 사용자 지정 개체의 런타임 메서드를 디버깅하려면
앞의 절차에 나열된 단계를 완료한 후 DtsDebugHost.exe에 연결할 수 있도록 패키지 실행을 강제로 일시 중지합니다. 패키지는 OnPreExecute 이벤트에 중단점을 추가하거나, 프로젝트에 스크립트 태스크를 추가하고 모달 메시지 상자를 표시하는 스크립트를 입력하여 강제로 일시 중지할 수 있습니다.
패키지를 실행합니다. 실행이 일시 중지되면 코드 프로젝트가 열려 있는 Visual Studio 인스턴스로 전환하고 디버그 메뉴에서 프로세스에 연결을 선택합니다. 형식 열에 x86으로만 표시된 DtsDebugHost.exe 인스턴스가 아니라 Managed, x86으로 표시된 인스턴스에 연결해야 합니다.
일시 중지된 패키지로 돌아가서 중단점을 지나 계속하거나 확인을 클릭하여 스크립트 태스크에서 발생한 메시지 상자를 닫고 패키지 실행 및 디버깅을 계속합니다.
|