Développement d'objets personnalisés pour Integration Services

S’applique à : SQL Server SSIS Integration Runtime dans Azure Data Factory

Lorsque les objets de flux de contrôle et de flux de données inclus dans SQL Server Integration Services ne répondent pas complètement à vos besoins, vous pouvez développer vos propres types d’objets personnalisés, notamment les suivants :

  • Tâches personnalisées.

  • Gestionnaires de connexions personnalisés. Connectez-vous aux sources de données externes qui ne sont pas prises en charge actuellement.

  • Modules fournisseurs d'informations personnalisés. Enregistrez des événements de package dans des formats qui ne sont pas pris en charge actuellement.

  • Énumérateurs personnalisés. Prenez en charge l'itération sur un jeu d'objets ou de formats de valeurs qui ne sont pas pris en charge actuellement.

  • Composants de flux de données personnalisés. Peuvent être configurés en tant que sources, transformations ou destinations.

Le modèle objet Integration Services facilite ce développement personnalisé à l'aide de classes de base qui fournissent un cadre cohérent et fiable pour votre implémentation personnalisée.

Si vous n'avez pas à réutiliser les fonctionnalités personnalisées dans plusieurs packages, la tâche de script et le composant Script vous donnent toute la puissance d'un langage de programmation managé avec beaucoup moins de code d'infrastructure à écrire. Pour plus d’informations, consultez Comparaison des solutions de script et des objets personnalisés.

Étapes de développement d'un objet personnalisé pour Integration Services

Lorsque vous développez un objet personnalisé à utiliser dans Integration Services, vous développez une bibliothèque de classes (DLL) qui sera chargée au moment de la conception et au moment de l'exécution par le Concepteur SSIS et par le runtime Integration Services. Les méthodes les plus importantes que vous devez implémenter ne sont pas celles que vous appelez à partir de votre propre code, mais celles que le runtime appelle à des moments appropriés pour initialiser et valider votre composant et appeler ses fonctionnalités.

Voici les étapes à suivre pour développer un objet personnalisé :

  1. Créez un projet de type Bibliothèque de classes dans votre langage de programmation managé préféré.

  2. Héritez de la classe de base appropriée, comme indiqué dans le tableau suivant.

  3. Appliquez l'attribut approprié à votre nouvelle classe, comme indiqué dans le tableau suivant.

  4. Remplacez les méthodes de la classe de base comme requis et écrivez le code des fonctionnalités personnalisées de votre objet.

  5. Générez éventuellement une interface utilisateur personnalisée pour votre composant. Afin de faciliter le déploiement, vous pouvez développer l'interface utilisateur sous la forme d'un projet distinct au sein de la même solution, puis la générer en tant qu'assembly séparé.

  6. (Facultatif) Affichez un lien vers des exemples et contenus d’Aide pour l’objet personnalisé dans la Boîte à outils SSIS.

  7. Générez, déployez et déboguez votre nouvel objet personnalisé comme décrit dans Génération, déploiement et débogage d’objets personnalisés.

Classes de base, attributs et méthodes importantes

Ce tableau constitue une référence simple aux éléments les plus importants du modèle objet Integration Services pour chaque type d'objet personnalisé que vous pouvez développer.

Objet personnalisé Classe de base Attribut Méthodes importantes
Tâche Task DtsTaskAttribute Execute
Gestionnaire de connexions ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnection
Module fournisseur d'informations LogProviderBase DtsLogProviderAttribute OpenLog, , LogCloseLog
Énumérateur ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Composant de flux de données PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, , PrimeOutputProcessInput

Pour afficher un lien dans la Boîte à outils SSIS vers des exemples et des contenus d’Aide pour un objet personnalisé écrit en code managé, utilisez les propriétés suivantes.

Pour afficher un lien vers des exemples et des contenus d'Aide pour un objet personnalisé écrit en code natif, ajoutez des entrées dans le fichier de Registre Script (.rgs) pour SamplesTag, HelpKeyword et HelpCollection. Voici un exemple.

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

val SamplesTag = s 'ExecutePackageTask'

Interface utilisateur personnalisée

Pour permettre aux utilisateurs de votre objet personnalisé de configurer ses propriétés, vous devrez peut-être également développer une interface utilisateur personnalisée. Dans les cas où une interface utilisateur personnalisée n'est pas strictement requise, vous pouvez choisir d'en créer une afin de fournir une interface plus conviviale que l'éditeur par défaut.

Dans un projet d’interface utilisateur personnalisée ou assembly, vous avez généralement deux classes : une classe qui implémente une interface Integration Services pour les interfaces utilisateur du type spécifique de l’objet personnalisé et le formulaire Windows qu’elle affiche pour collecter des informations auprès de l’utilisateur. Les interfaces que vous implémentez comportent uniquement quelques méthodes et une interface utilisateur personnalisée n'est pas difficile à développer.

Notes

De nombreux modules fournisseurs d’informations Integration Services ont une interface utilisateur personnalisée qui implémente l’objet IDtsLogProviderUI et remplace la zone de texte Configuration par la liste déroulante filtrée des gestionnaires de connexions disponibles. Toutefois, les interfaces utilisateur personnalisées des modules fournisseurs d'informations personnalisés ne sont pas implémentées dans cette version de Integration Services. La spécification d'une valeur pour la propriété UITypeName de l'objet DtsLogProviderAttribute est sans effet.

Le tableau suivant constitue une référence simple aux interfaces que vous devez implémenter lorsque vous développez une interface utilisateur personnalisée pour chaque type d'objet personnalisé. Il explique également ce que l’utilisateur voit si vous choisissez de ne pas développer d’interface utilisateur personnalisée pour votre objet, ou si vous ne parvenez pas à lier votre objet à son interface utilisateur en utilisant la propriété UITypeName dans l’attribut de l’objet. Bien que le puissant éditeur avancé puisse s'avérer satisfaisant pour un composant de flux de données, la fenêtre Propriétés est une solution moins conviviale pour les tâches et les gestionnaires de connexions, et un énumérateur ForEach personnalisé ne peut pas du tout être configuré sans formulaire personnalisé.

Objet personnalisé Classe de base pour interface utilisateur Comportement d'édition par défaut si aucune interface utilisateur personnalisée n'est fournie
Tâche IDtsTaskUI Fenêtre Propriétés uniquement
Gestionnaire de connexions IDtsConnectionManagerUI Fenêtre Propriétés uniquement
Module fournisseur d'informations IDtsLogProviderUI

(Non implémenté dans Integration Services.)
Zone de texte dans la colonne Configuration
Énumérateur ForEachEnumeratorUI Fenêtre Propriétés uniquement. La zone Configuration de l'énumérateur de l'éditeur est vide.
Composant de flux de données IDtsComponentUI Éditeur avancé

Ressources externes

Voir aussi

Persistance des objets personnalisés
Génération, déploiement et débogage d’objets personnalisés