Supporta il multitargeting in componenti personalizzatiSupport multi-targeting in your custom components

È ora possibile utilizzare Progettazione SSIS in SQL Server Data Tools (SSDT) per creare, gestire ed eseguire i pacchetti di tale destinazione SQL Server 2016, SQL Server 2014 o 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. Per ottenere SSDT per Visual Studio 2015, vedere Download più recenti SQL Server Data Tools.To get SSDT for Visual Studio 2015, see Download Latest SQL Server Data Tools.

In Esplora soluzioni fare clic con il pulsante destro del mouse su un progetto di Integration Services e scegliere Proprietà per aprire le pagine delle proprietà per il progetto.In Solution Explorer, right-click on an Integration Services project and select Properties to open the property pages for the project. Nella scheda Generale di Proprietà di configurazioneselezionare la proprietà TargetServerVersion , quindi scegliere SQL Server 2016, SQL Server 2014 o 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.

La proprietà TargetServerVersion nella finestra di dialogo Proprietà progettoTargetServerVersion property in project properties dialog box

Supporto delle versioni più e funzionalità di multitargeting per i componenti personalizzatiMultiple version support and multi-targeting for custom components

Tutti i cinque tipi di estensioni personalizzate di SSIS supportano il multitargeting.All five types of SSIS custom extensions support multi-targeting.

  • Gestioni connessioniConnection managers
  • AttivitàTasks
  • EnumeratoriEnumerators
  • Provider di logLog providers
  • Componenti del flusso di datiData flow components

Per le estensioni gestite, Progettazione SSIS carica la versione dell'estensione per la versione di destinazione specificato.For managed extensions, SSIS Designer loads the version of the extension for the specified target version. Esempio:For example:

  • Quando la versione di destinazione è SQL Server 2012, la finestra di progettazione carica la versione 2012 dell'estensione.When the target version is SQL Server 2012, the designer loads the 2012 version of the extension.
  • Quando la versione di destinazione è SQL Server 2016, la finestra di progettazione carica la versione di 2016 dell'estensione.When the target version is SQL Server 2016, the designer loads the 2016 version of the extension.

Le estensioni COM non supportano la funzionalità di multitargeting.COM extensions do not support multi-targeting. Progettazione SSIS Carica sempre l'estensione di COM per la versione corrente di SQL Server, indipendentemente dalla versione di destinazione specificato.SSIS Designer always loads the COM extension for the current version of SQL Server, regardless of the specified target version.

Aggiungere il supporto di base per più versioni e funzionalità di multitargetingAdd basic support for multiple versions and multi-targeting

Per linee guida di base, vedere ottenere estensioni SSIS personalizzate devono essere supportati dal supporto di più versioni di 2015 di SSDT per SQL Server 2016.For basic guidance, see Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016. Questo post di blog vengono descritti i passaggi o i requisiti seguenti.This blog post describes the following steps or requirements.

  • Distribuire gli assembly nelle cartelle appropriate.Deploy your assemblies to the appropriate folders.

  • Creare un file con estensione map per SQL Server 2014 e versioni elevate.Create an extension map file for SQL Server 2014 and high versions.

Aggiungere il codice per passare le versioniAdd code to switch versions

Versioni di opzione in una gestione connessione personalizzata, attività, l'enumeratore o provider di logSwitch versions in a custom connection manager, task, enumerator, or log provider

Per una gestione connessione personalizzata, attività, l'enumeratore o provider di log, aggiungere logica di downgrade di SaveToXML metodo.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.
    }
}

Versioni di opzione in un componente flusso di dati personalizzatiSwitch versions in a custom data flow component

Per una gestione connessione personalizzata, attività, l'enumeratore o provider di log, aggiungere la logica di downgrade nel nuovo PerformDowngrade metodo.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;
    }
}

Errori comuniCommon errors

InvalidCastExceptionInvalidCastException

Messaggio di errore.Error message. Impossibile oggetto COM di cast di tipo 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100' di tipo 'REC0 ComObject' interfaccia.Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100'. Questa operazione non riuscita perché la chiamata QueryInterface sul componente COM per l'interfaccia con IID '{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}' non è riuscita a causa del seguente errore: interfaccia non supportata (eccezione da 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)). (Dtspipelinewrap).(Microsoft.SqlServer.DTSPipelineWrap).

Soluzione.Solution. Se l'estensione personalizzata fa riferimento all'assembly di interoperabilità di SSIS, ad esempio dtspipelinewrap o dtsruntimewrap, impostare il valore della incorpora tipi di interoperabilità proprietà * * 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".

Tipi di interoperabilità incorporati

Impossibile caricare alcuni tipi quando la versione di destinazione è SQL Server 2012Unable to load some types when target version is SQL Server 2012

Questo problema interessa determinati tipi, ad esempio IErrorReportingService o IUserPromptService.This issue affects certain types such as IErrorReportingService or IUserPromptService.

Messaggio di errore (ad esempio).Error message (example). Impossibile caricare il tipo 'Microsoft.DataWarehouse.Design.IErrorReportingService' dall'assembly ' Microsoft.DataWarehouse, Version = 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'.

Soluzione alternativa.Workaround. Utilizzare un database MessageBox anziché queste interfacce quando la versione di destinazione è SQL Server 2012.Use a MessageBox instead of these interfaces when the target version is SQL Server 2012.