Entwickeln benutzerdefinierter Objekte für Integration Services

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

Wenn die in SQL Server Integration Services enthaltene Ablaufsteuerung und die Datenflussobjekte nicht vollständig Ihren Anforderungen entsprechen, können Sie eine Vielzahl von Typen benutzerdefinierter Objekte einschließlich der folgenden selbst entwickeln:

  • Benutzerdefinierte Tasks.

  • Benutzerdefinierte Verbindungs-Manager Stellt eine Verbindung mit externen Datenquellen her, die derzeit nicht unterstützt werden.

  • Benutzerdefinierte Protokollanbieter Protokollieren Paketereignisse in Formaten, die derzeit nicht unterstützt werden.

  • Benutzerdefinierte Enumeratoren Unterstützen die Iteration durch eine Reihe von Objekt- oder Wertformaten, die derzeit nicht unterstützt werden.

  • Benutzerdefinierte Datenflusskomponenten Können als Quellen, Transformationen oder Ziele konfiguriert werden.

Diese benutzerdefinierte Entwicklung wird durch das Integration Services-Objektmodell mit Basisklassen vereinfacht, die ein konsistentes und zuverlässiges Framework für Ihre benutzerdefinierte Implementierung bieten.

Wenn Sie die benutzerdefinierte Funktionalität nicht in mehreren Paketen wiederverwenden müssen, bieten Ihnen der Skripttask und die Skriptkomponente die komplette Leistung einer verwalteten Programmiersprache, bei der erheblich weniger Infrastrukturcode geschrieben werden muss. Weitere Informationen finden Sie unter Vergleichen von Skriptlösungen und benutzerdefinierten Objekten.

Schritte zur Entwicklung eines benutzerdefinierten Objekts für Integration Services

Wenn Sie ein benutzerdefiniertes Objekt zur Verwendung in Integration Services entwickeln, erstellen Sie eine Klassenbibliothek (eine DLL), die zur Entwurfszeit und zur Laufzeit vom SSIS-Designer und von der Integration Services-Laufzeit geladen wird. Die wichtigsten Methoden, die Sie implementieren müssen, sind nicht die Methoden, die aus Ihrem eigenen Code aufgerufen werden, sondern die Methoden, die von der Laufzeit zu entsprechenden Zeiten aufgerufen werden, um die Komponenten zu initialisieren und zu überprüfen und ihre Funktionalität aufzurufen.

Nachfolgend sind die Schritte aufgeführt, die Sie bei der Entwicklung eines benutzerdefinierten Objekts befolgen müssen:

  1. Erstellen Sie in Ihrer bevorzugten verwalteten Programmiersprache ein neues Projekt des Typs „Klassenbibliothek“.

  2. Dieses sollte von der entsprechenden Basisklasse erben, wie in der folgenden Tabelle dargestellt.

  3. Übernehmen Sie das entsprechende Attribut für die neue Klasse, wie in der folgenden Tabelle dargestellt.

  4. Überschreiben Sie nach Bedarf die Methoden der Basisklasse, und schreiben Sie den Code für die benutzerdefinierte Funktionalität Ihres Objekts.

  5. Erstellen Sie optional eine benutzerdefinierte Benutzeroberfläche für die Komponente. Um die Bereitstellung zu erleichtern, können Sie die Benutzeroberfläche als separates Projekt innerhalb der gleichen Lösung entwickeln und sie als separate Assembly erstellen.

  6. Sie können optional einen Link zu Beispielen und Hilfeinhalt für das benutzerdefinierte Objekt in der SSIS-Toolbox anzeigen.

  7. Beachten Sie beim Erstellen, Bereitstellen und Debuggen Ihres neuen benutzerdefinierten Objekts die Beschreibungen in Erstellen, Bereitstellen und Debuggen von benutzerdefinierten Objekten.

Basisklassen, Attribute und wichtige Methoden

Die nachfolgende Tabelle bietet eine einfache Übersicht über die meisten wichtigen Elemente im Integration Services-Objektmodell für die einzelnen Typen von benutzerdefinierten Objekten, die Sie entwickeln können.

Benutzerdefiniertes Objekt Basisklasse attribute Wichtige Methoden
Aufgabe Task DtsTaskAttribute Execute
Ziel-Editor für Dimensionsverarbeitung ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Protokollanbieter LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLog
Enumerator ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Datenflusskomponente PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInput

Verwenden Sie die folgenden Eigenschaften, um einen Link zu Beispielen und Hilfeinhalt für ein benutzerdefiniertes Objekt, das in verwaltetem Code geschrieben wurde, in der SSIS-Toolbox anzuzeigen.

Um einen Link zu Beispielen und Hilfeinhalt für ein benutzerdefiniertes Objekt anzuzeigen, das im systemeigenen Code geschrieben wurde, fügen Sie Einträge in der Registrierungsskriptdatei (.rgs) für SamplesTag, HelpKeyword und HelpCollection hinzu. Im Folgenden finden Sie ein Beispiel.

val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'

val SamplesTag = s 'ExecutePackageTask'

Bereitstellen einer benutzerdefinierten Benutzeroberfläche

Damit Benutzer Ihres benutzerdefinierten Objekts dessen Eigenschaften konfigurieren können, müssen Sie möglicherweise auch eine benutzerdefinierte Benutzeroberfläche entwickeln. In Fällen, in denen eine benutzerdefinierte Benutzeroberfläche nicht ausdrücklich erforderlich ist, können Sie eine solche Oberfläche erstellen, um eine benutzerfreundlichere Oberfläche als den standardmäßigen Editor bereitzustellen.

In einem benutzerdefinierten Benutzeroberflächenprojekt oder einer entsprechenden Assembly gibt es im Allgemeinen zwei Klassen: eine Klasse, die eine Integration Services-Schnittstelle für Benutzeroberflächen für den speziellen Typ des benutzerdefinierten Objekts implementiert, und das Windows Form, in dem diese angezeigt wird, um Informationen vom Benutzer zu erfassen. Die von Ihnen implementierten Oberflächen weisen nur wenige Methoden auf, und die Entwicklung einer benutzerdefinierten Benutzeroberfläche ist ganz einfach.

Hinweis

Viele Integration Services-Protokollanbieter verfügen über eine benutzerdefinierte Benutzeroberfläche, die IDtsLogProviderUI implementiert und das Textfeld Konfiguration durch eine gefilterte Dropdownliste der verfügbaren Verbindungs-Manager ersetzt. Individuelle Benutzeroberflächen für benutzerdefinierte Protokollanbieter werden in dieser Version von Integration Services jedoch nicht implementiert. Das Angeben eines Werts für die UITypeName-Eigenschaft von DtsLogProviderAttribute hat keine Auswirkungen.

Die nachfolgende Tabelle bietet eine einfache Übersicht über die Oberflächen, die Sie implementieren müssen, wenn Sie eine benutzerdefinierte Benutzeroberfläche für die einzelnen Typen eines benutzerdefinierten Objekts entwickeln. Es wird auch erläutert, was dem Benutzer angezeigt wird, wenn Sie keine benutzerdefinierte Oberfläche für Ihr Objekt entwickeln möchten, oder wenn Sie Ihr Objekt nicht mithilfe der UITypeName-Eigenschaft in dem Attribut des Objekts mit seiner Benutzeroberfläche verknüpfen. Der leistungsstarke Erweiterte Editor mag für eine Datenflusskomponente zwar zufriedenstellend sein, das Eigenschaftenfenster stellt jedoch eine weniger benutzerfreundliche Lösung für Tasks und Verbindungs-Manager dar. Ohne ein benutzerdefiniertes Formular kann ein benutzerdefinierter ForEach-Enumerator überhaupt nicht konfiguriert werden.

Benutzerdefiniertes Objekt Basisklasse für Benutzeroberfläche Standardmäßiges Bearbeitungsverhalten, wenn keine benutzerdefinierte Benutzeroberfläche bereitgestellt wird
Aufgabe IDtsTaskUI Nur das Eigenschaftenfenster
Ziel-Editor für Dimensionsverarbeitung IDtsConnectionManagerUI Nur das Eigenschaftenfenster
Protokollanbieter IDtsLogProviderUI

(Nicht in Integration Services implementiert)
Textfeld in der Spalte Konfiguration
Enumerator ForEachEnumeratorUI Nur das Eigenschaftenfenster. Der Bereich für die Enumeratorkonfiguration des Editors ist leer.
Datenflusskomponente IDtsComponentUI Erweiterter Editor

Externe Ressourcen

Weitere Informationen

Beibehalten von benutzerdefinierten Objekten
Erstellen, Bereitstellen und Debuggen von benutzerdefinierten Objekten