Unterstützen von mehreren Zielversionen in benutzerdefinierten Komponenten

Gilt für:SQL Server SSIS Integration Runtime in Azure Data Factory

Sie können nun den SSIS-Designer in SQL Server Data Tools (SSDT) verwenden, um Pakete zu erstellen, zu verwalten und auszuführen, die auf SQL Server 2016, SQL Server 2014 oder SQL Server 2012 ausgerichtet sind. SSDT für Visual Studio 2015 können Sie unter Download Latest SQL Server Data Tools (Herunterladen der aktuellen Version von SQL Server Data Tools) herunterladen.

Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf ein Integration Services-Projekt, und wählen Sie Eigenschaften aus, um die Eigenschaftsseiten für das Projekt zu öffnen. Wählen Sie auf der Registerkarte Allgemein der Konfigurationseigenschaften die Eigenschaft TargetServerVersion aus, und wählen Sie dann SQL Server 2016, SQL Server 2014 oder SQL Server 2012 aus.

TargetServerVersion-Eigenschaft im Dialogfeld „Projekteigenschaften“

Unterstützen von Versionen und Festlegen von Zielversionen für benutzerdefinierte Komponenten

Die fünf benutzerdefinierten SSIS-Erweiterungen unterstützen alle die Festlegung von Zielversionen.

  • Verbindungs-Manager
  • Aufgaben
  • Enumeratoren
  • Protokollanbieter
  • Datenflusskomponenten

Für verwaltete Erweiterungen lädt der SSIS-Designer die Erweiterungsversion für die angegebene Zielversion herunter. Beispiel:

  • Wenn die Zielversion SQL Server 2012 ist, lädt der Designer die SQL Server 2012-Version der Erweiterung herunter.
  • Wenn die Zielversion SQL Server 2016 ist, lädt der Designer die SQL Server 2016-Version der Erweiterung herunter.

COM-Erweiterungen unterstützen die Festlegung von Zielversionen nicht. Der SSIS-Designer lädt unabhängig von der angegebenen Zielversion immer die COM-Erweiterung für die aktuelle Version von SQL Server herunter.

Hinzufügen grundlegender Unterstützung für mehrere Versionen und für die Festlegung von Zielversionen

Allgemeine Hinweise finden Sie unter Getting your SSIS custom extensions to be supported by the multi-version support of SSDT 2015 for SQL Server 2016 (Unterstützen benutzerdefinierter SSIS-Erweiterungen durch die Zielversionsunterstützung von SSDT 2015 für SQL Server 2016). In diesem Blogbeitrag werden die folgenden Schritte bzw. Anforderungen beschrieben:

  • Bereitstellen von Assemblys in den entsprechenden Ordnern

  • Erstellen einer Erweiterungszuordnungsdatei für SQL Server 2014 und höhere Versionen

Hinzufügen von Code für Versionswechsel

Wechseln zwischen Versionen in einem benutzerdefinierten Verbindungs-Manager, Enumerator, Protokollanbieter oder in einer benutzerdefinierten Aufgabe

Fügen Sie einem benutzerdefinierten Verbindungs-Manager, Enumerator, Protokollanbieter oder einer benutzerdefinierten Aufgabe eine Herabstufungslogik in der SaveToXML-Methode hinzu.

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

Wechseln zwischen Versionen in einer benutzerdefinierten Datenflusskomponente

Fügen Sie einem benutzerdefinierten Verbindungs-Manager, Enumerator, Protokollanbieter oder einer benutzerdefinierten Aufgabe eine Herabstufungslogik in der neuen PerformDowngrade-Methode hinzu.

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

Häufige Fehler

InvalidCastException

Fehlermeldung. Das COM-Objekt des Typs „System.__ComObject“ kann nicht in den Schnittstellentyp „Microsoft.SqlServer.Dts.Pipeline.Wrapper.IDTSComponentMetaData100“ umgewandelt werden. Dieser Vorgang konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID „{BE8C48A3-155B-4810-BA5C-BDF68A659E9E}“ aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt (Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)). (Microsoft.SqlServer.DTSPipelineWrap).

Lösung: Wenn Ihre benutzerdefinierte Erweiterung auf SSIS-Interop-Assemblys wie Microsoft.SqlServer.DTSPipelineWrap oder Microsoft.SqlServer.DTSRuntimeWrap verweist, legen Sie den Wert der Eigenschaft Interop-Typen einbetten auf False fest.

Interop-Typen einbetten

Mehrere Typen können bei SQL Server 2012 als festgelegter Zielversion nicht geladen werden

Dieses Problem betrifft bestimmte Typen wie IErrorReportingService oder IUserPromptService.

Fehlermeldung (Beispiel): Der Typ „Microsoft.DataWarehouse.Design.IErrorReportingService“ in der Assembly „Microsoft.DataWarehouse, Version=13.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91“ konnte nicht geladen werden.

Problemumgehung: Verwenden Sie anstelle der Schnittstellen ein Meldungsfenster (MessageBox), wenn als Zielversion SQL Server 2012 verwendet wird.