다음을 통해 공유


사용자 지정 구성 요소에서 멀티 타기팅 지원

적용 대상: Azure Data Factory의 SQL Server SSIS Integration Runtime

이제 SQL Server Data Tools (SSDT)의 SSIS 디자이너에서 SQL Server 2016, SQL Server 2014 또는 SQL Server 2012를 대상으로 하는 패키지를 만들고, 유지 관리하고 실행할 수 있습니다. Visual Studio 2015용 SSDT를 다운로드하려면 최신 SQL Server Data Tools 다운로드를 참조하세요.

프로젝트 속성 페이지를 열려면 솔루션 탐색기에서 프로젝트 노드를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다. 구성 속성일반 탭에서 TargetServerVersion 속성을 선택한 다음 SQL Server 2016, SQL Server 2014 또는 SQL Server 2012를 선택합니다.

프로젝트 속성 대화 상자의 TargetServerVersion 속성

사용자 지정 구성 요소에 대한 여러 버전 지원 및 멀티 타기팅

다섯 가지 유형의 모든 SSIS 사용자 지정 확장은 멀티 타기팅을 지원합니다.

  • 연결 관리자
  • 작업
  • 열거자
  • 로그 공급자
  • 데이터 흐름 구성 요소

관리되는 확장의 경우 SSIS 디자이너는 지정된 대상 버전에 대한 확장 버전을 로드합니다. 예시:

  • 대상 버전이 SQL Server 2012인 경우 디자이너는 2012 버전의 확장을 로드합니다.
  • 대상 버전이 SQL Server 2016인 경우 디자이너는 2016 버전의 확장을 로드합니다.

COM 확장은 멀티 타기팅을 지원하지 않습니다. SSIS 디자이너는 항상 지정된 대상 버전에 관계 없이 SQL Server의 현재 버전에 대한 COM 확장을 로드합니다.

여러 버전 및 다중 대상 지정에 대한 기본 지원 추가

기본 지침은 SSDT 2015 for SQL Server 2016의 다중 버전 지원에서 지원되는 SSIS 사용자 지정 확장 가져오기를 참조하세요. 이 블로그 게시물에서는 다음 단계 또는 요구 사항을 설명합니다.

  • 적절한 폴더에 어셈블리를 배포합니다.

  • SQL Server 2014 이상 버전에 대한 확장 맵 파일을 만듭니다.

버전을 전환하는 코드 추가

사용자 지정 연결 관리자, 태스크, 열거자 또는 로그 공급자의 버전 전환

사용자 지정 연결 관리자, 태스크, 열거자 또는 로그 공급자의 경우 SaveToXML 메서드에서 다운그레이드 논리를 추가합니다.

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.
    }
}

사용자 지정 데이터 흐름 구성 요소의 버전 전환

사용자 지정 연결 관리자, 태스크, 열거자 또는 로그 공급자의 경우 새로운 PerformDowngrade 메서드에서 다운그레이드 논리를 추가합니다.

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;
    }
}

일반 오류

InvalidCastException

오류 메시지입니다. 'System.__ComObject' 형식의 COM 개체를 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100' 인터페이스 형식으로 캐스팅할 수 없습니다. IID가 '{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}'인 인터페이스에 대한 COM 구성 요소에 대한 QueryInterface 호출이 다음 오류로 인해 실패했기 때문에 이 작업이 실패했습니다. 이러한 인터페이스는 지원되지 않습니다(HRESULT: 0x80004002(E_NOINTERFACE)에서 예외). (Microsoft.SqlServer.DTSPipelineWrap).

해결 방법. 사용자 지정 익스텐션이 Microsoft.SqlServer.DTSPipelineWrap 또는 Microsoft.SqlServer.DTSRuntimeWrap과 같은 SSIS interop 어셈블리를 참조하는 경우 Embed Interop Types 속성의 값을 False로 설정합니다.

Interop 형식 포함

대상 버전이 SQL Server 2012인 경우 일부 형식을 로드할 수 없음

이 issue는 IErrorReportingService 또는 IUserPromptService와 같은 특정 형식에 영향을 줍니다.

오류 메시지(예) 'Microsoft.DataWarehouse, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91' 어셈블리에서 'Microsoft.DataWarehouse.Design.IErrorReportingService' 형식을 로드할 수 없습니다.

해결 방법. 대상 버전이 SQL Server 2012인 경우 이러한 인터페이스 대신 MessageBox를 사용합니다.