Aangepaste objecten ontwikkelen voor Integration Services

Van toepassing op:SQL Server SSIS Integration Runtime in Azure Data Factory

Wanneer de control flow- en dataflowobjecten die bij SQL Server Integration Services zijn inbegrepen niet volledig aan je eisen voldoen, kun je zelf veel soorten aangepaste objecten ontwikkelen, waaronder:

  • Aangepaste taken.

  • Aangepaste verbindingsbeheerders. Maak verbinding met externe databronnen die momenteel niet worden ondersteund.

  • Aangepaste logleveranciers. Log pakketgebeurtenissen in formaten die momenteel niet worden ondersteund.

  • Aangepaste enumerators. Ondersteun iteratie over een set object- of waardeformaten die momenteel niet worden ondersteund.

  • Aangepaste datastroomcomponenten. Kan worden geconfigureerd als bronnen, transformaties of bestemmingen.

Het Integration Services-objectmodel faciliteert deze aangepaste ontwikkeling met basisklassen die een consistent en betrouwbaar framework bieden voor uw aangepaste implementatie.

Als je geen aangepaste functionaliteit hoeft te hergebruiken over meerdere pakketten, geven de Script-taak en de Scriptcomponent je de volledige kracht van een beheerde programmeertaal met aanzienlijk minder infrastructuurcode om te schrijven. Voor meer informatie, zie Scriptingoplossingen vergelijken en aangepaste objecten.

Stappen bij het ontwikkelen van een aangepast object voor integratieservices

Wanneer je een aangepast object ontwikkelt voor gebruik in Integration Services, ontwikkel je een Class Library (een DLL) die tijdens het ontwerp en de uitvoering wordt geladen door SSIS Designer en door de Integration Services-runtime. De belangrijkste methoden die je moet implementeren zijn niet methoden die je vanuit je eigen code aanroept, maar methoden die de runtime op geschikte momenten aanroept om je component te initialiseren en te valideren en de functionaliteit ervan aan te roepen.

Hier zijn de stappen die je volgt bij het ontwikkelen van een aangepast object:

  1. Maak een nieuw project van het type Class Library aan in je favoriete beheerde programmeertaal.

  2. Erf van de juiste basisklasse, zoals weergegeven in de volgende tabel.

  3. Pas het juiste attribuut toe op je nieuwe klasse, zoals weergegeven in de volgende tabel.

  4. Overschrijf de methoden van de basisklasse indien nodig en schrijf code voor de aangepaste functionaliteit van je object.

  5. Bouw optioneel een aangepaste gebruikersinterface voor je component. Voor het gemak van implementatie wil je de gebruikersinterface misschien als een apart project binnen dezelfde oplossing ontwikkelen, en deze als een aparte assembly bouwen.

  6. Optioneel kun je een link naar voorbeelden en Help-inhoud voor het aangepaste object tonen in de SSIS Toolbox.

  7. Bouw, deploy en debug je nieuwe aangepaste object zoals beschreven in Building, Deploying, and Debugging Custom Objects.

Basisklassen, attributen en belangrijke methoden

Deze tabel biedt een eenvoudige referentie naar de belangrijkste elementen in het Integration Services-objectmodel voor elk type aangepast object dat je kunt ontwikkelen.

Aangepast object Basisklasse Attribute Belangrijke methoden
Opdracht Task DtsTaskAttribute Execute
Verbindingsbeheer ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Logboekprovider LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLog
Enquêteur ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Datastroomcomponent PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInput

Om een link in de SSIS Toolbox weer te geven naar voorbeelden en Help-inhoud voor een aangepast object geschreven in beheerde code, gebruik de volgende eigenschappen.

Om een link naar voorbeelden en Help-inhoud voor een aangepast object in native code weer te geven, voeg je vermeldingen toe aan het Registry Script (.rgs) bestand voor SamplesTag, HelpKeyword en HelpCollection. Hier volgt een voorbeeld.

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

val SamplesTag = s 'ExecutePackageTask'

Het bieden van een aangepaste gebruikersinterface

Om gebruikers van je aangepaste object de eigenschappen ervan te laten configureren, moet je mogelijk ook een aangepaste gebruikersinterface ontwikkelen. In die gevallen waarin een aangepaste gebruikersinterface niet strikt vereist is, kun je ervoor kiezen er een te maken om een gebruiksvriendelijkere interface te bieden dan de standaardeditor.

In een custom user interface-project of assembly heb je doorgaans twee klassen -a klasse die een Integration Services-interface implementeert voor gebruikersinterfaces voor het specifieke type custom object, en de Windows vorm die het toont om informatie van de gebruiker te verzamelen. De interfaces die je implementeert hebben slechts een paar methoden, en een aangepaste gebruikersinterface is niet moeilijk te ontwikkelen.

Note

Veel Integratiediensten logleveranciers hebben een aangepaste gebruikersinterface die het tekstvak Configuratie implementeert en vervangt IDtsLogProviderUI door een gefilterde dropdownlijst met beschikbare verbindingsbeheerders. Echter, aangepaste gebruikersinterfaces voor custom logproviders zijn niet geïmplementeerd in deze release van Integration Services. Het specificeren van een waarde voor de UITypeName eigenschap van de DtsLogProviderAttribute heeft geen effect.

De volgende tabel biedt een eenvoudige referentie naar de interfaces die je moet implementeren wanneer je een aangepaste gebruikersinterface ontwikkelt voor elk type aangepast object. Het legt ook uit wat de gebruiker ziet als je ervoor kiest geen aangepaste gebruikersinterface voor je object te ontwikkelen, of als je er niet in slaagt je object te koppelen aan de gebruikersinterface door de eigenschap UITypeName in het attribuut van het object te gebruiken. Hoewel de krachtige Geavanceerde editor bevredigend kan zijn voor een dataflowcomponent, is het venster Eigenschappen een minder gebruiksvriendelijke oplossing voor taken en verbindingsbeheerders, en kan een aangepaste ForEach-enumerator helemaal niet worden geconfigureerd zonder een aangepast formulier.

Aangepast object Basisklasse voor gebruikersinterface Standaard bewerkingsgedrag als er geen aangepaste gebruikersinterface is verstrekt
Opdracht IDtsTaskUI venster Eigenschappen alleen
Verbindingsbeheer IDtsConnectionManagerUI venster Eigenschappen alleen
Logboekprovider IDtsLogProviderUI

(Niet geïmplementeerd in Integration Services)
Tekstvak in de kolom Configuratie
Enquêteur ForEachEnumeratorUI venster Eigenschappen alleen. Het configuratiegebied van de enumerator van de editor is leeg.
Datastroomcomponent IDtsComponentUI Geavanceerde editor