Mendukung multi-penargetan di komponen kustom Anda
Berlaku untuk: SQL Server SSIS Integration Runtime 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 Alat Data SQL Server Terbaru.
Di Penjelajah Solusi, klik kanan pada proyek Layanan Integrasi dan pilih Properti untuk membuka halaman properti untuk proyek. Pada tab Umum Properti Konfigurasi, pilih properti TargetServerVersion, lalu pilih SQL Server 2016, SQL Server 2014, atau SQL Server 2012.
Dukungan beberapa versi dan multi-penargetan untuk komponen kustom
Kelima jenis ekstensi kustom SSIS mendukung multi-penargetan.
- Manajer 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 adalah SQL Server 2012, perancang memuat versi ekstensi 2012.
- Ketika versi target adalah 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 untuk 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
Mengalihkan 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.
}
}
Mengalihkan versi dalam komponen aliran data kustom
Untuk manajer koneksi kustom, tugas, enumerator, atau penyedia log, tambahkan logika downgrade 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).
Larutan. Jika ekstensi kustom Anda mereferensikan rakitan interop SSIS seperti Microsoft.SqlServer.DTSPipelineWrap atau Microsoft.SqlServer.DTSRuntimeWrap, atur nilai properti Embed Interop Type ke False.
Tidak dapat memuat beberapa jenis ketika versi target adalah 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'.
Penanganan masalah. Gunakan MessageBox alih-alih antarmuka ini saat versi target adalah SQL Server 2012.