Développement d'objets personnalisés pour Integration Services
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 connexion personnalisés. Se connecter aux sources de données externes qui ne sont pas prises en charge actuellement.
Fournisseurs d'informations personnalisés. Enregistrer des événements de package dans des formats qui ne sont pas pris en charge actuellement.
Énumérateurs personnalisés. Prendre 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 comme des sources, des transformations ou des 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é :
Créez un projet de type Bibliothèque de classes dans votre langage de programmation managé préféré.
Héritez de la classe de base appropriée, comme indiqué dans le tableau suivant.
Appliquez l'attribut approprié à votre nouvelle classe, comme indiqué dans le tableau suivant.
Remplacez les méthodes de la classe de base comme requis et écrivez le code des fonctionnalités personnalisées de votre objet.
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é.
Éventuellement, affichez un lien vers des exemples et contenus d'Aide pour l'objet personnalisé, dans la Boîte à outils SSIS.
Générez, déployez et déboguez votre nouvel objet personnalisé comme indiqué 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 |
|||
Gestionnaire de connexions |
|||
Module fournisseur d'informations |
|||
Énumérateur |
|||
Composant de flux de données |
Liens vers des exemples et des contenus d'aide
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.
[!REMARQUE]
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 pouvez 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 |
Fenêtre Propriétés uniquement |
|
Gestionnaire de connexions |
Fenêtre Propriétés uniquement |
|
Module fournisseur d'informations |
(Non implémenté dans Integration Services.) |
Zone de texte dans la colonne Configuration |
Énumérateur |
Fenêtre Propriétés uniquement. La zone Configuration de l'énumérateur de l'éditeur est vide. |
|
Composant de flux de données |
Éditeur avancé |
Ressources externes
- Entrée de blog, Le processus de génération de la solution de Visual Studio donne un avertissement à propos de la dépendance indirecte sur l'assemblage .NET Framework en raison des références SSIS, sur blogs.msdn.com.
|
Voir aussi
Tâches
Génération, déploiement et débogage d'objets personnalisés