Mendukung multi-penargetan di komponen kustom Anda

Berlaku untuk: Integration Runtime SSIS SQL Server di Azure Data Factory

Anda sekarang dapat menggunakan SSIS Designer di SQL Server Data Tools (SSDT) untuk membuat, memelihara, dan menjalankan paket yang menargetkan SQL Server 2016, SQL Server 2014, atau SQL Server 2012. Untuk mendapatkan SSDT untuk Visual Studio 2015, lihat Mengunduh SQL Server Data Tools Terbaru.

Di Penjelajah Solusi, klik kanan proyek Layanan Integrasi dan pilih Properti untuk membuka halaman properti untuk proyek. Pada tab UmumProperti Konfigurasi, pilih properti TargetServerVersion, lalu pilih SQL Server 2016, SQL Server 2014, atau SQL Server 2012.

Properti TargetServerVersion dalam kotak dialog properti proyek properti

Dukungan beberapa versi dan multi-penargetan untuk komponen kustom

Kelima jenis ekstensi kustom SSIS mendukung multi-penargetan.

  • Pengelola koneksi
  • Tugas
  • Enumerator
  • Penyedia log
  • Komponen aliran data

Untuk ekstensi terkelola, SSIS Designer memuat versi ekstensi untuk versi target yang ditentukan. Contohnya:

  • Ketika versi target SQL Server 2012, perancang memuat versi ekstensi 2012.
  • Ketika versi target SQL Server 2016, perancang memuat versi ekstensi 2016.

Ekstensi COM tidak mendukung multi-penargetan. SSIS Designer selalu memuat ekstensi COM untuk versi SQL Server saat ini, terlepas dari versi target yang ditentukan.

Menambahkan dukungan dasar untuk beberapa versi dan multi-penargetan

Untuk panduan dasar, lihat Mendapatkan ekstensi kustom SSIS Anda agar didukung oleh dukungan multi-versi SSDT 2015 untuk SQL Server 2016. Posting blog ini menjelaskan langkah atau persyaratan berikut.

  • Sebarkan rakitan Anda ke folder yang sesuai.

  • Buat file peta ekstensi untuk SQL Server 2014 dan versi tinggi.

Menambahkan kode untuk beralih versi

Beralih versi di manajer koneksi kustom, tugas, enumerator, atau penyedia log

Untuk manajer koneksi kustom, tugas, enumerator, atau penyedia log, tambahkan logika downgrade dalam metode 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.
    }
}

Beralih versi dalam komponen aliran data kustom

Untuk manajer koneksi kustom, tugas, enumerator, atau penyedia log, tambahkan logika penurunan tingkat dalam metode PerformDowngrade baru.

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

Kesalahan umum

InvalidCastException

Pesan kesalahan. Tidak dapat mentransmisikan objek COM jenis 'System.__ComObject' ke jenis antarmuka 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100'. Operasi ini gagal karena panggilan QueryInterface pada komponen COM untuk antarmuka dengan IID '{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}' gagal karena kesalahan berikut: Tidak ada antarmuka yang didukung (Pengecualian dari HRESULT: 0x80004002 (E_NOINTERFACE)). (Microsoft.SqlServer.DTSPipelineWrap).

Solusi. Jika ekstensi kustom Anda mereferensikan rakitan interop SSIS seperti Microsoft.SqlServer.DTSPipelineWrap atau Microsoft.SqlServer.DTSRuntimeWrap, atur nilai properti Embed Interop Type ke False.

Menyematkan Jenis Interop

Tidak dapat memuat beberapa jenis saat versi target SQL Server 2012

Masalah ini memengaruhi jenis tertentu seperti IErrorReportingService atau IUserPromptService.

Pesan kesalahan (contoh). Tidak dapat memuat tipe 'Microsoft.DataWarehouse.Design.IErrorReportingService' dari rakitan 'Microsoft.DataWarehouse, Version=13.0.0.0, Culture=netral, PublicKeyToken=89845dcd8080cc91'.

Solusi. Gunakan MessageBox alih-alih antarmuka ini saat versi target SQL Server 2012.