SQL Server Integration Services (SSIS) ist das Tool der Wahl bei der Konsolidierung verschiedener Datenquellen. Makroskopische Aufgaben werden in SSIS zu Paketen zusammengefasst, die wiederum aus atomaren Tasks zusammengesetzt sind. Microsoft liefert bereits von Haus aus eine Vielzahl nativer Tasks mit, doch offene Architektur und .NET-Basierung ermöglichen auch Eigenentwicklungen mit vertretbarem Aufwand. In diesem Zusammenhang spricht man von Custom Components.
Das Entwickeln von Custom Components bietet sich an, wenn bestimmte Vorgänge mit nativen Tasks nicht oder nur aufwändig zu realisieren sind und Wiederverwendbarkeit wichtig ist.
Um eine Custom Component zu erstellen, legt man mit Visual Studio ein neues Projekt mit dem Template Class Library an. Über die Referenz PipelineHost wird die auf COM Libraries basierende SSIS Infrastruktur dem .NET Entwickler als managed Wrapper zur Verfügung gestellt.
Für Datenflusskomponenten leitet man die eigene Klasse von PipelineComponent ab. Dabei lassen sich über das Attribut DtsPipelineComponent Eigenschaften wie Typ, Icon und Anzeigename spezifizieren.
1: [DtsPipelineComponent(// Benutzt SSIS zur Gruppierung für Toolbox-Einträge
2: ComponentType = ComponentType.Transform,
3: // Wird in SSIS in Eigenschaften der Task angezeigt
4: DisplayName = "SDXPerfStat",
5: // Wird in SSIS in Eigenschaften der Task angezeigt
6: Description="Gathering Performance Statistics",
7: // Bild für die CustomComponent im SSIS Data Flow Task
8: IconResource = "SDXPerfStat.performance.ico")]
9: public class SDXPerfStat : PipelineComponent
10: {
11: // HIER WEITERE METHODEN FÜR DAS SSIS FRAMEWORK EINFÜGEN
12: }
Im Laufe des Designs und der Ausführung eines SSIS Paketes treten mehrere Events auf, die auch bei der Paketentwicklung im SSIS Tab Event Handlers sichtbar sind. SSIS ruft nun nach Einbindung der Custom Component in eine Data Flow Task entsprechende Methoden auf, die die Basisklasse PipelineComponent bereitstellt. Der Komponentenentwickler kann nun je nach funktionalem Bedarf keine, eine oder mehrere Methoden der Basisklasse überschreiben um eigene Funktionalität abzubilden. Die wichtigsten dieser Methoden sind im folgenden Aufrufschema dargestellt (links Ausführungsmodus, rechts Designmodus des SSIS-Paketes).
Jede dieser Methoden erfüllt spezifische Aufgaben. Beispielsweise überprüft Validate() ob sich die Komponente in einem ordnungsgemäßen Status befindet. Der Komponentenentwickler definiert, welche Prüfungen durchgeführt werden.
In Validate() wird typischerweise überprüft, ob die richtige Anzahl von Input- und Output-Spalten der Komponente vorhanden ist oder ob Eigenschaften richtig gesetzt sind. Entsprechend wird Validate() im SSIS Designmodus mehrfach aufgerufen, damit bei Bearbeitung der Eigenschaften im Advanced Editor jederzeit der Gültigkeitsstatus der Komponente überprüft wird. Validate() gibt an SSIS darüber Informationen zurück mittels eines Kategoriewertes (Corrupt, NeedsNewMetadata u.a.) und eines Fehlertyps. Zum Vergleich eine gültige und zwei ungültige Custom Components im SSIS Designer.
In der nächsten Folge dieser Serie betrachten wir weitere Methoden und die Einbindung von Custom Components in SSIS.
Sie sehen gerade einen Platzhalterinhalt von Facebook. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von Instagram. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr InformationenSie sehen gerade einen Platzhalterinhalt von X. Um auf den eigentlichen Inhalt zuzugreifen, klicken Sie auf die Schaltfläche unten. Bitte beachten Sie, dass dabei Daten an Drittanbieter weitergegeben werden.
Mehr Informationen