사용자 지정 개체 빌드, 배포 및 디버그
적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime
Integration Services에 대한 사용자 지정 개체에 대한 코드를 작성한 후에는 어셈블리를 빌드하고, 배포하고, SSIS 디자이너에 통합하여 패키지에서 사용할 수 있도록 하고, 테스트 및 디버그해야 합니다.
Integration Services에 대한 사용자 지정 개체 빌드, 배포 및 디버깅 단계
개체의 사용자 지정 기능을 작성한 후에는 이제 테스트하고 사용자가 사용할 수 있도록 해야 합니다. 이 단계는 Integration Services에 대해 만들 수 있는 모든 유형의 사용자 지정 개체에 대해 매우 유사합니다.
빌드, 배포 및 테스트하는 단계는 다음과 같습니다.
어셈블리를 빌드 합니다.
GAC(전역 어셈블리 캐시)에 어셈블리를 설치합니다.
이 개체는 도구 상자에 자동으로 추가됩니다.
필요한 경우 배포 문제를 해결 합니다.
코드를 테스트 하고 디버그합니다.
이제 SSDT(SQL Server Data Tools)에서 SSIS 디자이너를 사용하여 다양한 버전의 SQL Server를 대상으로 하는 패키지를 만들고, 유지 관리하고, 실행할 수 있습니다. 이러한 개선이 사용자 지정 확장에 미치는 영향에 대한 자세한 내용은 SQL Server 2016용 SSDT 2015의 다중 버전 지원에서 지원되는 SSIS 사용자 지정 확장 가져오기를 참조 하세요.
어셈블리 서명
어셈블리를 공유하려는 경우 전역 어셈블리 캐시에 설치해야 합니다. 어셈블리가 전역 어셈블리 캐시에 추가된 후 SSDT(SQL Server Data Tools)와 같은 애플리케이션에서 어셈블리를 사용할 수 있습니다. 전역 어셈블리 캐시의 요구 사항은 어셈블리가 전역적으로 고유하다는 것을 보장하는 강력한 이름으로 어셈블리에 서명해야 한다는 것입니다. 강력한 이름의 어셈블리에는 어셈블리의 이름, 문화권, 공개 키 및 버전 번호를 포함하는 정규화된 이름이 있습니다. 런타임은 이 정보를 사용하여 어셈블리를 찾고 이름이 같은 다른 어셈블리와 구분합니다.
강력한 이름으로 어셈블리를 서명하려면 먼저 퍼블릭/프라이빗 키 쌍이 있어야 하며 이 키 쌍이 없으면 만들어야 합니다. 이 퍼블릭 및 프라이빗 암호화 키 쌍은 빌드 시 강력한 이름의 어셈블리를 만드는 데 사용됩니다.
강력한 이름 및 어셈블리에 서명하기 위해 수행해야 하는 단계에 대한 자세한 내용은 .NET Framework SDK 설명서의 다음 항목을 참조하세요.
강력한 이름의 어셈블리
키 쌍 만들기
방법: 강력한 이름으로 어셈블리 서명
빌드 시 Visual Studio에서 강력한 이름으로 어셈블리에 쉽게 서명할 수 있습니다. 프로젝트 속성 대화 상자에서 서명 탭을 선택합니다. 어셈블리에 서명하는 옵션을 선택한 다음 키(.snk) 파일의 경로를 제공합니다.
어셈블리 빌드
프로젝트에 서명한 후 SQL Server Data Tools의 빌드 메뉴에서 사용할 수 있는 명령을 사용하여 프로젝트 또는 솔루션을 빌드하거나 다시 빌드 해야 합니다. 솔루션에 사용자 지정 사용자 인터페이스를 위한 별도의 프로젝트가 포함된 경우 이 프로젝트도 강력한 이름으로 서명해야 하며 이 프로젝트를 솔루션과 동시에 빌드할 수 있습니다.
어셈블리를 배포하고 전역 어셈블리 캐시에 설치하는 다음 두 단계를 수행하는 가장 편리한 방법은 Visual Studio에서 빌드 후 이벤트로 이러한 단계를 스크립팅하는 것입니다. 빌드 이벤트는 Visual Basic 프로젝트에 대한 프로젝트 속성의 컴파일 페이지 및 C# 프로젝트의 빌드 이벤트 페이지에서 사용할 수 있습니다. 전체 경로는 gacutil.exe 같은 명령 프롬프트 유틸리티에 필요합니다. 따옴표는 공백이 포함된 경로와 공백이 포함된 경로로 확장되는 $(TargetPath)와 같은 매크로 주위에 모두 필요합니다.
다음은 사용자 지정 로그 공급자에 대한 빌드 후 이벤트 명령줄의 예입니다.
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -u $(TargetName)
"C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\bin\NETFX 4.0 Tools\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\130\DTS\LogProviders "
어셈블리 배포
SSIS 디자이너는 SQL Server Integration Services가 설치될 때 생성된 일련의 폴더에 있는 파일을 열거하여 패키지에서 사용할 수 있는 사용자 지정 개체를 찾습니다. 기본 SQL Server 설치 설정을 사용하는 경우 이 폴더 집합은 C:\Program Files\Microsoft SQL Server\130\DTS 아래에 있습니다. 그러나 사용자 지정 개체에 대한 설치 프로그램을 만드는 경우 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath 레지스트리 키의 값을 확인하여 이 폴더의 위치를 확인해야 합니다.
참고 항목
SQL Server Data Tools의 다중 버전 지원과 잘 작동하도록 사용자 지정 구성 요소를 배포하는 방법에 대한 자세한 내용은 SQL Server 2016용 SSDT 2015의 다중 버전 지원에서 지원되는 SSIS 사용자 지정 확장 가져오기를 참조하세요.
다음 두 가지 방법으로 폴더에 어셈블리를 배치할 수 있습니다.
빌드 후 컴파일된 어셈블리를 적절한 폴더로 이동하거나 복사합니다. 편의상 빌드 후 이벤트에 복사 명령을 포함할 수 있습니다.
적절한 폴더에 직접 어셈블리를 빌드합니다.
C:\Program Files\Microsoft SQL Server\130\DTS에 있는 다음 배포 폴더는 다양한 유형의 사용자 지정 개체에 사용됩니다.
Custom object | 배포 폴더 |
---|---|
작업 | 작업 |
연결 관리자 | 연결 |
로그 공급자 | 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(전역 어셈블리 캐시 도구)를 참조하세요.
배포 문제 해결
사용자 지정 개체가 도구 상자 또는 사용 가능한 개체 목록에 표시되지만 패키지에 추가할 수 없는 경우 다음을 시도해 보세요.
전역 어셈블리 캐시에서 여러 버전의 구성 요소를 찾습니다. 전역 어셈블리 캐시에 여러 버전의 구성 요소가 있는 경우 디자이너가 구성 요소를 로드하지 못할 수 있습니다. 전역 어셈블리 캐시에서 어셈블리의 모든 인스턴스를 삭제하고 어셈블리를 다시 추가합니다.
배포 폴더에 어셈블리의 단일 인스턴스만 있는지 확인합니다.
도구 상자를 새로 고칩니다.
Visual Studio를 연결하여 devenv.exe 예외가 발생하지 않도록 초기화 코드를 단계별로 실행하도록 중단점을 설정합니다.
코드 테스트 및 디버깅
사용자 지정 개체의 런타임 메서드를 디버깅하는 가장 간단한 방법은 사용자 지정 개체를 빌드한 후 Visual Studio에서 dtexec.exe 시작하고 구성 요소를 사용하는 패키지를 실행하는 것입니다.
Validate 메서드와 같은 구성 요소의 디자인 타임 메서드를 디버그하려면 Visual Studio의 두 번째 인스턴스에서 구성 요소를 사용하는 패키지를 열고 해당 devenv.exe 프로세스에 연결합니다.
또한 패키지가 SSIS 디자이너에서 열리고 실행 중일 때 구성 요소의 런타임 메서드를 디버그하려면 DtsDebugHost.exe 프로세스에도 연결할 수 있도록 패키지 실행 시 강제로 일시 중지해야 합니다.
dtexec.exe에 연결하여 개체의 런타임 메서드를 디버깅하려면
이 항목에 설명된 대로 디버그 구성에서 프로젝트에 서명하고 빌드하고, 배포하고, 전역 어셈블리 캐시에 설치합니다.
프로젝트 속성의 디버그 탭에서 시작 외부 프로그램을 시작 동작으로 선택하고, C:\Program Files\Microsoft SQL Server\130\DTS\Binn에 기본적으로 설치되는 dtexec.exe를 찾습니다.
명령줄 옵션 입력란의 시작 옵션 아래에서 구성 요소를 사용하는 패키지를 실행하는 데 필요한 명령줄 인수를 입력합니다. 종종 명령줄 인수는 /F[ILE] 스위치와 .dtsx 파일의 경로 및 파일 이름으로 구성됩니다. 자세한 내용은 dtexec Utility를 참조하세요.
구성 요소의 런타임 메서드에서 적절한 경우 소스 코드에서 중단점을 설정합니다.
프로젝트를 실행합니다.
SQL Server Data Tools에 연결하여 사용자 지정 개체의 디자인 타임 메서드를 디버깅하려면
이 항목에 설명된 대로 디버그 구성에서 프로젝트에 서명하고 빌드하고, 배포하고, 전역 어셈블리 캐시에 설치합니다.
사용자 지정 개체의 디자인 타임 메서드에서 적절한 경우 소스 코드에서 중단점을 설정합니다.
Visual Studio의 두 번째 인스턴스를 열고 사용자 지정 개체를 사용하는 패키지가 포함된 Integration Services 프로젝트를 로드합니다.
Visual Studio의 첫 번째 인스턴스에서 첫 번째 인스턴스의 디버그 메뉴에서 프로세스에 연결(Attach to Process)을 선택하여 패키지가 로드되는 devenv.exe 두 번째 인스턴스에 연결합니다.
Visual Studio의 두 번째 인스턴스에서 패키지를 실행합니다.
SQL Server Data Tools에 연결하여 사용자 지정 개체의 런타임 메서드를 디버그하려면
이전 절차에 나열된 단계를 완료한 후 DtsDebugHost.exe에 연결할 수 있도록 패키지 실행을 강제로 일시 중지합니다. OnPreExecute 이벤트에 중단점을 추가하거나, 프로젝트에 스크립트 태스크를 추가하고 모달 메시지 상자를 표시하는 스크립트를 입력하여 강제로 일시 중지할 수 있습니다.
패키지를 실행합니다. 일시 중지가 발생하면 코드 프로젝트가 열려 있는 Visual Studio 인스턴스로 전환하고 디버그 메뉴에서 프로세스에 연결(Attach to Process)을 선택합니다. x86으로만 나열된 인스턴스가 아니라 Type 열에서 관리형 x86으로 나열된 DtsDebugHost.exe 인스턴스에 연결해야 합니다.
일시 중지된 패키지로 돌아가 중단점을 지나거나 확인을 클릭하여 스크립트 태스크에서 발생한 메시지 상자를 해제하고 패키지 실행 및 디버깅을 계속합니다.
참고 항목
Integration Services용 사용자 지정 개체 개발
사용자 지정 개체 지속
패키지 배포 문제 해결 도구.