사용자 지정 개체 빌드, 배포 및 디버깅Building, Deploying, and Debugging Custom Objects

에 대 한 사용자 지정 개체에 대 한 코드를 작성 한 후 Integration ServicesIntegration Services, 어셈블리를 빌드, 배포 및에 통합 해야 SSISSSIS 디자이너를 패키지에서 사용 하기 위해 사용할 수 있도록 하 고 테스트 및 디버그 하기.After you have written the code for a custom object for Integration ServicesIntegration Services, you must build the assembly, deploy it, and integrate it into SSISSSIS Designer to make it available for use in packages, and test and debug it.

빌드, 배포 및 Integration Services에 대 한 사용자 지정 개체를 디버깅의 단계 Steps in Building, Deploying, and Debugging a Custom Object for Integration Services

개체의 사용자 지정 기능을 작성한 후에는You have already written the custom functionality for your object. 이를 테스트하고 사용자가 사용할 수 있도록 해야 합니다.Now you have to test it and to make it available to users. 이 단계는 Integration ServicesIntegration Services용으로 만들 수 있는 모든 유형의 사용자 지정 개체에서 매우 비슷합니다.The steps are very similar for all the types of custom objects that you can create for Integration ServicesIntegration Services.

다음은 빌드, 배포 및 테스트 하는 단계입니다.Here are the steps to build, deploy, and test it.

  1. Sign 어셈블리를 강력한 이름으로 생성 합니다.Sign the assembly to be generated with a strong name.

  2. 빌드 어셈블리입니다.Build the assembly.

  3. 배포 이동 하거나 적절 한 복사 하 여 어셈블리 Integration ServicesIntegration Services 폴더입니다.Deploy the assembly by moving or copying it to the appropriate Integration ServicesIntegration Services folder.

  4. 설치 전역 어셈블리 캐시 (GAC)에 어셈블리입니다.Install the assembly in the global assembly cache (GAC).

    이 개체는 도구 상자에 자동으로 추가됩니다.The object is automatically added to the Toolbox.

  5. 문제를 해결 배포에 필요한 경우.Troubleshoot the deployment, if necessary.

  6. 테스트 고 코드를 디버그 합니다.Test and debug your code.

    이제 사용할 수 있습니다 SSIS 디자이너 SQL Server Data Tools (SSDT)의 서로 다른 버전을 대상으로 하는 패키지를 만들기, 유지 관리 및 실행 SQL ServerSQL Server합니다.You can now use SSIS Designer in SQL Server Data Tools (SSDT) to create, maintain, and run packages that target different versions of SQL ServerSQL Server. 사용자 지정 확장 프로그램을 개선 한이 엔진이이의 영향에 대 한 자세한 내용은 참조 하세요. SQL Server 2016 용 SSDT 2015 년의 다중 버전 지원에서 지원 하도록 사용자 지정 SSIS 확장 가져오기For more info about the impact of this improvement on your custom extensions, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016

어셈블리에 서명 Signing the Assembly

공유하려는 어셈블리는 전역 어셈블리 캐시에 설치해야 합니다.When an assembly is meant to be shared, it must be installed in the global assembly cache. 전역 어셈블리 캐시에 추가된 어셈블리는 SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT)와 같은 응용 프로그램에서 사용할 수 있습니다.After the assembly has been added to the global assembly cache, the assembly can be used by applications such as SQL Server Data Tools(SSDT)SQL Server Data Tools (SSDT). 전역 어셈블리 캐시에 어셈블리를 추가하려면 어셈블리를 강력한 이름으로 서명하여 해당 어셈블리가 전역적으로 고유함을 보장해야 합니다.A requirement of the global assembly cache is that the assembly must be signed with a strong name, which guarantees that an assembly is globally unique. 강력한 이름의 어셈블리에는 어셈블리의 이름, culture, 공개 키 및 버전 번호를 포함하는 정규화된 이름이 있습니다.A strong-named assembly has a fully qualified name that includes the name, culture, public key, and version number of the assembly. 런타임에서는 이 정보를 사용하여 어셈블리를 찾고 같은 이름의 다른 어셈블리와 구별합니다.The runtime uses this information to locate the assembly and to differentiate it from other assemblies with the same name.

강력한 이름으로 어셈블리를 서명하려면 먼저 공개/개인 키 쌍이 있어야 하며 이 키 쌍이 없으면 만들어야 합니다.To sign an assembly with a strong name, you must first have or create a public/private key pair. 이 암호화 키 쌍은 빌드할 때 강력한 이름의 어셈블리를 만드는 데 사용합니다.This public and private cryptographic key pair is used at build time to create a strong-named assembly.

강력한 이름과 어셈블리를 서명할 때 따라야 하는 단계에 대한 자세한 내용은 .NET Framework.NET Framework SDK 설명서의 다음 항목을 참조하십시오.For more information about strong names and on the steps that you must followto sign an assembly, see the following topics in the .NET Framework.NET Framework SDK documentation:

  • 강력한 이름의 어셈블리Strong-Named Assemblies

  • 공개/개인 키 쌍 만들기Creating a Key Pair

  • 방법: 강력한 이름으로 어셈블리 서명Signing an Assembly with a Strong Name

    Visual StudioVisual Studio에서는 빌드할 때 어셈블리를 강력한 이름으로 서명하기가 쉽습니다.You can easily sign your assembly with a strong name in Visual StudioVisual Studio at build time. 프로젝트 속성 대화 상자는 서명 탭 합니다.In the Project Properties dialog box, select the Signing tab. 옵션을 선택 어셈블리에 서명 키 (.snk) 파일의 경로 제공 합니다.Select the option to Sign the assembly and then provide the path of the key (.snk) file.

어셈블리 빌드 Building the Assembly

프로젝트를 서명한 후 빌드 또는 프로젝트 또는 솔루션에서 사용할 수 있는 명령을 사용 하 여 다시 작성 해야 합니다는 빌드 의 메뉴 SQL Server Data ToolsSQL Server Data Tools합니다.After signing the project, you must build or rebuild the project or the solution by using the commands available on the Build menu of SQL Server Data ToolsSQL Server Data Tools. 솔루션에 사용자 지정 사용자 인터페이스를 위한 별도의 프로젝트가 포함된 경우 이 프로젝트도 강력한 이름으로 서명해야 하며 이 프로젝트를 솔루션과 동시에 빌드할 수 있습니다.Your solution may contain a separate project for a custom user interface, which must also be signed with a strong name, and can be built at the same time.

어셈블리를 배포하고 전역 어셈블리 캐시에 설치하는 다음 두 단계를 수행하는 데 가장 편리한 방법은 Visual StudioVisual Studio에서 이러한 단계를 빌드 후 이벤트로 스크립팅하는 것입니다.The most convenient method for performing the next two steps—deploying the assembly and installing it in the global assembly cache—is to script these steps as a post-build event in Visual StudioVisual Studio. 사용할 수 있는 빌드 이벤트는 컴파일 에 대 한 프로젝트 속성 페이지는 Visual BasicVisual Basic 프로젝트에서는 빌드 이벤트 C# 프로젝트에 대 한 페이지입니다.Build events are available from the Compile page of Project Properties for a Visual BasicVisual Basic project, and from the Build Events page for a C# project. 전체 경로와 같은 명령 프롬프트 유틸리티에 대 한 필요는 gacutil.exe합니다.The full path is required for command prompt utilities such as gacutil.exe. 공백이 포함된 경로와 공백이 포함된 경로로 확장되는 $(TargetPath) 등의 매크로는 모두 따옴표로 묶어야 합니다.Quotation marks are required both around paths that contain spaces and around macros such as $(TargetPath) that expand to paths that contain spaces.

다음은 사용자 지정 로그 공급자에 대한 빌드 후 이벤트 명령줄의 예입니다.Here is an example of a post-build event command line for a custom log provider:

"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 "  

어셈블리 배포 Deploying the Assembly

SSISSSIS 디자이너에 일련의 될 때 생성 되는 폴더에 있는 파일을 열거 하 여 패키지에서 사용 하기 위해 사용할 수 있는 사용자 지정 개체를 찾는 SQL ServerSQL Server Integration ServicesIntegration Services 가 설치 되어 있습니다.The SSISSSIS Designer locates the custom objects available for use in packages by enumerating the files found in a series of folders that are created when SQL ServerSQL Server Integration ServicesIntegration Services is installed. 때 기본 SQL ServerSQL Server 설치 설정에 사용 되는 경우이 집합 폴더 아래에 있는 C:\Program Files\Microsoft SQL Server\130\DTS합니다.When the default SQL ServerSQL Server installation settings are used, this set of folders is located under C:\Program Files\Microsoft SQL Server\130\DTS. 그러나 사용자 지정 개체에 대 한 설치 프로그램을 만드는 경우 값을 확인 해야는 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath 레지스트리 키를이 폴더의 위치를 확인 합니다.However if you create a setup program for your custom object, you should check the value of the HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\130\SSIS\Setup\DtsPath registry key to verify the location of this folder.

참고

SQL Server Data Tools에서 다중 버전 지원 제대로 작동 하는 사용자 지정 구성 요소를 배포 하는 방법에 대 한 정보를 참조 하십시오. SQL Server 2016 용 SSDT 2015 년의 다중 버전 지원에 지원을 받기 위해 SSIS 사용자 지정 확장 프로그램을 가져오는합니다.For info about how to deploy custom components to work well with the multi-version support in SQL Server Data Tools, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016.

다음과 같은 두 가지 방법으로 폴더에 어셈블리를 추가할 수 있습니다.You can put the assembly in the folder in two ways:

  • 빌드 후 컴파일된 어셈블리를 적절한 폴더로 이동하거나 복사합니다.Move or copy the compiled assembly to the appropriate folder after building it. 편의상 빌드 후 이벤트에 복사 명령을 포함할 수 있습니다.(For convenience, you can include the copy command in a Post-build Event.)

  • 어셈블리를 적절한 폴더에 직접 빌드합니다.Build the assembly directly in the appropriate folder.

    다음 배포 폴더는 C:\Program Files\Microsoft SQL Server\130\DTS 다양 한 유형의 사용자 지정 개체에 사용 됩니다.The following deployment folders under C:\Program Files\Microsoft SQL Server\130\DTS are used for the various types of custom objects:

사용자 지정 개체Custom object 배포 폴더Deployment folder
태스크Task 태스크Tasks
ODBC 대상 편집기Connection manager 연결Connections
로그 공급자Log provider LogProvidersLogProviders
데이터 흐름 구성 요소Data flow component PipelineComponentsPipelineComponents
참고

이러한 폴더에 복사된 어셈블리는 사용 가능한 태스크, 연결 관리자 등의 열거형을 지원합니다.Assemblies are copied to these folders to support the enumeration of available tasks, connection managers, and so on. 따라서 사용자 지정 개체의 사용자 지정 사용자 인터페이스만 포함된 어셈블리는 이러한 폴더에 배포하지 않아도 됩니다.Therefore you do not have to deploy assemblies that contain only the custom user interface for custom objects to these folders.

전역 어셈블리 캐시에 어셈블리 설치 Installing the Assembly in the Global Assembly Cache

작업 어셈블리를 전역 어셈블리 캐시 (GAC)에 설치 하려면 명령줄 도구를 사용 하 여 gacutil.exe, 하거나 어셈블리를 끌어는 %system%\assembly 디렉터리입니다.To install the task assembly into the global assembly cache (GAC), use the command line tool gacutil.exe, or drag the assemblies to the %system%\assembly directory. 편의 위해 포함할 수 있습니다에 대 한 호출 gacutil.exe 빌드 후 이벤트에서입니다.For convenience, you can also include the call to gacutil.exe in a Post-build Event.

다음 명령은 라는 구성 요소가 설치 MyTask.dll 를 사용 하 여 GAC에 gacutil.exe합니다.The following command installs a component named MyTask.dll into the GAC by using gacutil.exe.

gacutil /iF MyTask.dll

새 버전의 사용자 지정 개체를 설치한 후에는 SSISSSIS 디자이너를 닫았다가 다시 열어야 합니다.You must close and reopen SSISSSIS Designer after you install a new version of your custom object. 전역 어셈블리 캐시에 이전 버전의 사용자 지정 개체를 설치한 경우 새 버전을 설치하려면 먼저 이전 버전을 제거해야 합니다.If you have installed earlier versions of your custom object in the global assembly cache, you must remove them before installing the new version. 어셈블리를 제거 하려면 실행 gacutil.exe 와 어셈블리 이름을 지정 하 고는 /u 옵션입니다.To uninstall an assembly, run gacutil.exe and specify the assembly name with the /u option.

전역 어셈블리 캐시에 대한 자세한 내용은 " .NET Framework.NET Framework 도구"의 "전역 어셈블리 캐시 도구(Gactutil.exe)"를 참조하십시오.For more information about the global assembly cache, see Global Assembly Cache Tool (Gactutil.exe) in the .NET Framework.NET Framework Tools.

배포 문제 해결 Troubleshooting the Deployment

사용자 지정 개체에 표시 되 면는 도구 상자 또는 패키지에 추가 하 고 다음 있지만 사용 가능한 개체 목록이 없는 경우:If your custom object appears in the Toolbox or the list of available objects, but you are not able to add it to a package, try the following:

  1. 전역 어셈블리 캐시에 여러 버전의 구성 요소가 있는지 확인합니다.Look in the global assembly cache for multiple versions of your component. 전역 어셈블리 캐시에 여러 버전의 구성 요소가 있는 경우 디자이너에서 구성 요소를 로드하지 못할 수 있습니다.If there are multiple versions of the component in the global assembly cache, the designer may not be able to load your component. 전역 어셈블리 캐시에서 어셈블리의 모든 인스턴스를 삭제하고 어셈블리를 다시 추가합니다.Delete all instances of the assembly from the global assembly cache, and re-add the assembly.

  2. 배포 폴더에 어셈블리의 단일 인스턴스만 있는지 확인합니다.Make sure that only a single instance of the assembly exists in the deployment folder.

  3. 도구 상자를 새로 고칩니다.Refresh the Toolbox.

  4. 연결 Visual StudioVisual Studiodevenv.exe 예외가 발생 하지 않는지 되도록 초기화 코드를 단계별로 실행 되도록 중단점을 설정 합니다.Attach Visual StudioVisual Studio to devenv.exe and set a breakpoint to step through your initialization code to ensure that no exceptions occur.

테스트 및 코드 디버깅 Testing and Debugging Your Code

시작 하는 사용자 지정 개체의 런타임 메서드를 디버깅 하는 가장 간단한 방법입니다 dtexec.exe 에서 Visual StudioVisual Studio 후 사용자 지정 개체를 작성 및 구성 요소를 사용 하는 패키지를 실행 합니다.The simplest approach to debugging the run-time methods of a custom object is to start dtexec.exe from Visual StudioVisual Studio after building your custom object and run a package that uses the component.

와 같은 구성 요소의 디자인 타임 메서드를 디버깅 하려는 경우는 유효성 검사 메서드를 두 번째 인스턴스의 구성 요소를 사용 하는 패키지를 열고 Visual StudioVisual Studio에 연결 하 고 해당 devenv.exe 프로세스입니다.If you want to debug the component's design-time methods, such as the Validate method, open a package that uses the component in a second instance of Visual StudioVisual Studio, and attach to its devenv.exe process.

패키지를 열고에서 실행 되는 구성 요소의 런타임 메서드를 디버깅 하려는 경우 SSISSSIS 디자이너, 강제 해야 패키지의 실행을 일시 중지 한도 연결할 수 있도록는 DtsDebugHost.exe 프로세스입니다.If you also want to debug the component's run-time methods when a package is open and running in SSISSSIS designer, you must force a pause in the execution of the package so that you can also attach to the DtsDebugHost.exe process.

dtexec.exe에 연결하여 개체의 런타임 메서드를 디버깅하려면To debug an object's run-time methods by attaching to dtexec.exe

  1. 이 항목에 설명된 대로 디버그 구성 요소에서 프로젝트를 서명 및 빌드하고 배포한 다음 전역 어셈블리 캐시에 설치합니다.Sign and build your project in the Debug configuration, deploy it, and install it in the global assembly cache as described in this topic.

  2. 디버그프로젝트 속성선택, 시작 외부 프로그램 으로 시작 작업, 찾습니다 dtexec.exe, C:\Program Files\Microsoft SQL Server\130\DTS\Binn에서 기본적으로 설치 된 합니다.On the Debug tab of Project Properties, select Start external program as the Start Action, and locate dtexec.exe, which is installed by default in C:\Program Files\Microsoft SQL Server\130\DTS\Binn.

  3. 명령줄 옵션 텍스트 상자의 시작 옵션, 구성 요소를 사용 하는 패키지를 실행 하는 데 필요한 명령줄 인수를 입력 합니다.In the Command line options text box, under Start Options, enter the command line arguments required to run a package that uses your component. 명령줄 인수는 /F[ILE] 스위치와 그 다음에 나오는 .dtsx 파일의 경로 및 파일 이름으로 구성되는 경우가 많습니다.Often the command-line argument will consist of the /F[ILE] switch followed by the path and file name of the .dtsx file. 자세한 내용은 dtexec Utility을 참조하세요.For more information, see dtexec Utility.

  4. 원본 코드에서 구성 요소의 런타임 메서드 중 적절한 위치에 중단점을 설정합니다.Set breakpoints in the source code where appropriate in the run-time methods of your component.

  5. 프로젝트를 실행합니다.Run your project.

SQL Server Data Tools에 연결하여 사용자 지정 개체의 디자인 타임 메서드를 디버깅하려면To debug a custom object's design-time methods by attaching to SQL Server Data Tools

  1. 이 항목에 설명된 대로 디버그 구성 요소에서 프로젝트를 서명 및 빌드하고 배포한 다음 전역 어셈블리 캐시에 설치합니다.Sign and build your project in the Debug configuration, deploy it, and install it in the global assembly cache as described in this topic.

  2. 원본 코드에서 사용자 지정 개체의 디자인 타임 메서드 중 적절한 위치에 중단점을 설정합니다.Set breakpoints in the source code where appropriate in the design-time methods of your custom object.

  3. Visual StudioVisual Studio의 두 번째 인스턴스를 열고 해당 사용자 지정 개체를 사용하는 패키지가 포함된 Integration ServicesIntegration Services 프로젝트를 로드합니다.Open a second instance of Visual StudioVisual Studio and load an Integration ServicesIntegration Services project that contains a package that uses the custom object.

  4. 첫 번째 인스턴스에서 Visual StudioVisual Studio의 두 번째 인스턴스에 연결 하 devenv.exe 에서 선택 하 여 패키지가 로드 되는 프로세스에 연결 에서 디버그 첫 번째 인스턴스 메뉴.From the first instance of Visual StudioVisual Studio, attach to the second instance of devenv.exe in which the package is loaded by selecting Attach to Process from the Debug menu of the first instance.

  5. Visual StudioVisual Studio의 두 번째 인스턴스에서 패키지를 실행합니다.Run the package from the second instance of Visual StudioVisual Studio.

SQL Server Data Tools에 연결하여 사용자 지정 개체의 런타임 메서드를 디버깅하려면To debug a custom object's run-time methods by attaching to SQL Server Data Tools

  1. 이전 절차에 나열 된 단계를 완료 한 후 패키지의 실행을 일시 중지를 연결할 수 있도록 강제로 DtsDebugHost.exe합니다.After you have completed the steps listed in the previous procedure, force a pause in the execution of your package so that you can attach to DtsDebugHost.exe. 중단점을 추가 하 여 강제로 일시이 중지할 수 있습니다는 OnPreExecute 이벤트를 하거나 프로젝트에 스크립트 태스크를 추가 하 고 모달 메시지 상자를 표시 하는 스크립트를 입력 합니다.You can force this pause by adding a breakpoint to the OnPreExecute event, or by adding a Script task to your project and entering script that displays a modal message box.

  2. 패키지를 실행합니다.Run the package. 인스턴스를 일시 중지 되어 있는 경우 전환 Visual StudioVisual Studio 코드 프로젝트 열기 및 선택 이라는 프로세스에 연결 에서 디버그 메뉴.When the pause occurs, switch to the instance of Visual StudioVisual Studio in which your code project is open, and select Attach to Process from the Debug menu. 인스턴스에 연결 해야 DtsDebugHost.exe 로 나열 Managed, x86형식 열으로 나열 되지 인스턴스에 x86 만 합니다.Make sure to attach to the instance of DtsDebugHost.exe listed as Managed, x86 in the Type column, not to the instance listed as x86 only.

  3. 일시 중지 된 패키지로 돌아가서 중단점을 지 나 계속 진행 하거나 클릭 확인 하 패키지 실행 및 디버깅을 계속 하 고 스크립트 태스크에 의해 발생 하 여 메시지 상자를 닫습니다.Return to the paused package and continue past the breakpoint, or click OK to dismiss the message box raised by the Script task, and continue package execution and debugging.

참고 항목See Also

Integration Services에 대 한 사용자 지정 개체 개발 Developing Custom Objects for Integration Services
사용자 지정 개체 지속 Persisting Custom Objects
패키지 배포 문제 해결 도구Troubleshooting Tools for Package Development