Entwickeln benutzerdefinierter Objekte für Integration Services

Entwickeln benutzerdefinierter Objekte für Integration Services

 

Wenn die in SQL Server Integration Services enthaltene Ablaufsteuerung und die Datenflussobjekte nicht vollständig Ihren Anforderungen entsprechen, können Sie eine Vielzahl benutzerdefinierter Objekten selbst erstellen, darunter:

  • Benutzerdefinierte Tasks

  • Benutzerdefinierte Verbindungs-Manager Stellen 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.

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. Das Erstellen, Bereitstellen und Debuggen von neuen benutzerdefinierten Objekten wird unter Erstellen, Bereitstellen und Debuggen von benutzerdefinierten Objekten beschrieben.

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 ObjektBasisklasseAttributWichtige Methoden
AufgabenT:Microsoft.SqlServer.Dts.Runtime.TaskT:Microsoft.SqlServer.Dts.Runtime.DtsTaskAttributeM:Microsoft.SqlServer.Dts.Runtime.Task.Execute(Microsoft.SqlServer.Dts.Runtime.Connections,Microsoft.SqlServer.Dts.Runtime.VariableDispenser,Microsoft.SqlServer.Dts.Runtime.IDTSComponentEvents,Microsoft.SqlServer.Dts.Runtime.IDTSLogging,System.Object)
Verbindungs-ManagerT:Microsoft.SqlServer.Dts.Runtime.ConnectionManagerBaseT:Microsoft.SqlServer.Dts.Runtime.DtsConnectionAttributeM:Microsoft.SqlServer.Dts.Runtime.ConnectionManagerBase.AcquireConnection(System.Object), M:Microsoft.SqlServer.Dts.Runtime.ConnectionManagerBase.ReleaseConnection(System.Object)
ProtokollanbieterT:Microsoft.SqlServer.Dts.Runtime.LogProviderBaseT:Microsoft.SqlServer.Dts.Runtime.DtsLogProviderAttributeM:Microsoft.SqlServer.Dts.Runtime.LogProviderBase.OpenLog, M:Microsoft.SqlServer.Dts.Runtime.LogProviderBase.Log(System.String,System.String,System.String,System.String,System.String,System.String,System.String,System.DateTime,System.DateTime,System.Int32,System.Byte[]), M:Microsoft.SqlServer.Dts.Runtime.LogProviderBase.CloseLog
EnumeratorT:Microsoft.SqlServer.Dts.Runtime.ForEachEnumeratorT:Microsoft.SqlServer.Dts.Runtime.DtsForEachEnumeratorAttributeM:Microsoft.SqlServer.Dts.Runtime.ForEachEnumerator.GetEnumerator(Microsoft.SqlServer.Dts.Runtime.Connections,Microsoft.SqlServer.Dts.Runtime.VariableDispenser,Microsoft.SqlServer.Dts.Runtime.IDTSInfoEvents,Microsoft.SqlServer.Dts.Runtime.IDTSLogging)
DatenflusskomponenteT:Microsoft.SqlServer.Dts.Pipeline.PipelineComponentT:Microsoft.SqlServer.Dts.Pipeline.DtsPipelineComponentAttributeM:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.ProvideComponentProperties, M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.PrimeOutput(System.Int32,System.Int32[],Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer[]), M:Microsoft.SqlServer.Dts.Pipeline.PipelineComponent.ProcessInput(System.Int32,Microsoft.SqlServer.Dts.Pipeline.PipelineBuffer)

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'

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.

System_CAPS_ICON_note.jpg Hinweis


Viele Integration Services-Protokollanbieter verfügen über eine benutzerdefinierte Benutzeroberfläche, die T:Microsoft.SqlServer.Dts.Runtime.Design.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 P:Microsoft.SqlServer.Dts.Runtime.DtsLogProviderAttribute.UITypeName-Eigenschaft von T:Microsoft.SqlServer.Dts.Runtime.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 ObjektBasisklasse für BenutzeroberflächeStandardmäßiges Bearbeitungsverhalten, wenn keine benutzerdefinierte Benutzeroberfläche bereitgestellt wird
TaskT:Microsoft.SqlServer.Dts.Runtime.Design.IDtsTaskUINur das Eigenschaftenfenster
Verbindungs-ManagerT:Microsoft.SqlServer.Dts.Runtime.Design.IDtsConnectionManagerUINur das Eigenschaftenfenster
ProtokollanbieterT:Microsoft.SqlServer.Dts.Runtime.Design.IDtsLogProviderUI

(Nicht in Integration Services implementiert)
Textfeld in der Spalte Konfiguration
EnumeratorT:Microsoft.SqlServer.Dts.Runtime.ForEachEnumeratorUINur das Eigenschaftenfenster. Der Bereich für die Enumeratorkonfiguration des Editors ist leer.
DatenflusskomponenteT:Microsoft.SqlServer.Dts.Pipeline.Design.IDtsComponentUIErweiterter Editor
Integration Services icon (small)  Bleiben Sie mit Integration Services auf dem neuesten Stand
Die neuesten Downloads, Artikel, Beispiele und Videos von Microsoft sowie ausgewählte Lösungen aus der Community finden Sie auf MSDN auf der Integration Services-Seite:

- Besuchen Sie die Integration Services-Seite auf MSDN

Abonnieren Sie die auf der Seite verfügbaren RSS-Feeds, um automatische Benachrichtigungen zu diesen Updates zu erhalten.

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

Anzeigen:
© 2016 Microsoft