사용자 지정 구성 요소에서 다중 대상 지정을 지원 합니다.Support multi-targeting in your custom components

이제 사용할 수 있습니다 SSIS 디자이너 SQL Server Data Tools (SSDT) 만들기, 유지 관리 및 해당 대상 SQL Server 2016, SQL Server 2014 또는 SQL Server 2012에는 패키지를 실행 합니다.You can now use SSIS Designer in SQL Server Data Tools (SSDT) to create, maintain, and run packages that target SQL Server 2016, SQL Server 2014, or SQL Server 2012. Visual Studio 2015 용 SSDT를 다운로드 하려면 참조 최신 SQL Server Data Tools 다운로드합니다.To get SSDT for Visual Studio 2015, see Download Latest SQL Server Data Tools.

솔루션 탐색기에서 Integration Services 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성 을 선택하여 프로젝트에 대한 속성 페이지를 엽니다.In Solution Explorer, right-click on an Integration Services project and select Properties to open the property pages for the project. 구성 속성일반탭에서 TargetServerVersion 속성을 선택하고 SQL Server 2016, SQL Server 2014 또는 SQL Server 2012를 선택합니다.On the General tab of Configuration Properties, select the TargetServerVersion property, and then choose SQL Server 2016, SQL Server 2014, or SQL Server 2012.

프로젝트 속성 대화 상자에서 TargetServerVersion 속성TargetServerVersion property in project properties dialog box

여러 버전 지원 및 사용자 지정 구성 요소에 대 한 다중 대상 지정Multiple version support and multi-targeting for custom components

모든 유형의 다섯 개의 사용자 지정 SSIS 확장 멀티 타기 팅을 지원합니다.All five types of SSIS custom extensions support multi-targeting.

  • 연결 관리자Connection managers
  • 태스크Tasks
  • 열거자Enumerators
  • 로그 공급자Log providers
  • 데이터 흐름 구성 요소Data flow components

관리 되는 확장에 대 한 SSIS 디자이너에 지정 된 대상 버전에 대 한 확장의 버전을 로드합니다.For managed extensions, SSIS Designer loads the version of the extension for the specified target version. 예를 들어For example:

  • 대상 버전이 SQL Server 2012 때 디자이너에서 확장의 2012 버전을 로드 합니다.When the target version is SQL Server 2012, the designer loads the 2012 version of the extension.
  • 대상 버전이 SQL Server 2016 때 디자이너 2016 버전의 확장을 로드 합니다.When the target version is SQL Server 2016, the designer loads the 2016 version of the extension.

COM 확장 멀티 타기 팅을 지원 하지 않습니다.COM extensions do not support multi-targeting. SSIS 디자이너는 항상 지정 된 대상 버전에 관계 없이 SQL Server의 현재 버전에 대 한 COM 확장을 로드합니다.SSIS Designer always loads the COM extension for the current version of SQL Server, regardless of the specified target version.

여러 버전 및 다중 대상 지정에 대 한 기본 지원을 추가 합니다.Add basic support for multiple versions and multi-targeting

기본 지침 참조 SQL Server 2016 용 SSDT 2015 년의 다중 버전 지원에 지원을 받기 위해 SSIS 사용자 지정 확장 프로그램을 가져오는합니다.For basic guidance, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016. 이 블로그 게시물에서 다음 단계 또는 요구 사항에 설명 합니다.This blog post describes the following steps or requirements.

  • 해당 폴더에 어셈블리를 배포 합니다.Deploy your assemblies to the appropriate folders.

  • SQL Server 2014 및 높은 버전에 대 한 확장 맵 파일을 만듭니다.Create an extension map file for SQL Server 2014 and high versions.

버전을 전환 하는 코드를 추가 합니다.Add code to switch versions

사용자 지정 연결 관리자, 작업, 열거자, 또는 로그 공급자의 버전을 전환Switch versions in a custom connection manager, task, enumerator, or log provider

사용자 지정 연결 관리자, 태스크, 열거자, 또는 로그 공급자를 추가에서 다운 그레이드 논리는 의 SaveToXML 메서드.For a custom connection manager, task, enumerator, or log provider, add downgrade logic in the SaveToXML method.

public void SaveToXML(XmlDocument doc, IDTSInfoEvents events)
{
    if (TargetServerVersion == DTSTargetServerVersion.SQLServer2014)
    {
        // Add logic to downgrade from SQL Server 2016 to SQL Server 2014.
    }

    if (TargetServerVersion == DTSTargetServerVersion.SQLServer2012)
    {
         // Add logic to downgrade from SQL Server 2016 to SQL Server 2012.
    }
}

사용자 지정 데이터 흐름 구성 요소의 버전을 전환 합니다.Switch versions in a custom data flow component

사용자 지정 연결 관리자, 태스크, 열거자, 또는 로그 공급자에 대 한 새에서 다운 그레이드 논리를 추가할 PerformDowngrade 메서드.For a custom connection manager, task, enumerator, or log provider, add downgrade logic in the new PerformDowngrade method.

public override void PerformDowngrade(int pipelineVersion, DTSTargetServerVersion targetServerVersion)
{
    if (targetServerVersion == DTSTargetServerVersion.DTSTSV_SQLSERVER2014)
    {
        // Add logic to downgrade from SQL Server 2016 to SQL Server 2014.
        ComponentMetaData.Version = 8;
    }

    if (targetServerVersion == DTSTargetServerVersion.DTSTSV_SQLSERVER2012)
    {
          // Add logic to downgrade from SQL Server 2016 to SQL Server 2012.
        ComponentMetaData.Version = 6;
    }
}

일반 오류Common errors

InvalidCastExceptionInvalidCastException

오류 메시지입니다.Error message. 형식의 캐스트 COM 개체 수 없습니다. 'System.__ComObject' 인터페이스에 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100'를 입력합니다.Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100'. 다음 오류로 인해 IID가 '{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}' 인 인터페이스의 COM 구성 요소에서 QueryInterface를 호출 하지 못했습니다이 작업에 실패 했습니다: 인터페이스 (HRESULT의 예외: 0x80004002 (E_NOINTERFACE)).This operation failed because the QueryInterface call on the COM component for the interface with IID '{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)). (Microsoft.SqlServer.DTSPipelineWrap)입니다.(Microsoft.SqlServer.DTSPipelineWrap).

솔루션입니다.Solution. 예: Microsoft.SqlServer.DTSPipelineWrap 또는 Microsoft.SqlServer.DTSRuntimeWrap SSIS interop 어셈블리를 참조 하는 사용자 지정 확장 프로그램의 값을 설정할는 Interop 형식 포함 속성을 * * False "입니다.If your custom extension references SSIS interop assemblies such as Microsoft.SqlServer.DTSPipelineWrap or Microsoft.SqlServer.DTSRuntimeWrap, set the value of the Embed Interop Types property to **False".

Interop 형식 포함

대상 버전이 SQL Server 2012 때 일부 형식은 로드할 수 없습니다.Unable to load some types when target version is SQL Server 2012

이 문제는 IErrorReportingService 또는 IUserPromptService와 같은 특정 유형에 영향을 줍니다.This issue affects certain types such as IErrorReportingService or IUserPromptService.

오류 메시지 (예:)입니다.Error message (example). 어셈블리에서 'Microsoft.DataWarehouse.Design.IErrorReportingService' 형식을 로드할 수 없습니다 ' Microsoft.DataWarehouse, 버전 = 13.0.0.0, Culture = neutral, PublicKeyToken = 89845dcd8080cc91'.Could not load type 'Microsoft.DataWarehouse.Design.IErrorReportingService' from assembly 'Microsoft.DataWarehouse, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91'.

해결 방법입니다.Workaround. 대상 버전을 SQL Server 2012에는 이러한 인터페이스 대신 MessageBox를 사용 합니다.Use a MessageBox instead of these interfaces when the target version is SQL Server 2012.