Développement d'objets personnalisés pour Integration ServicesDeveloping Custom Objects for Integration Services

Lorsque les objets de flux de contrôle et de flux de données inclus dans SQL ServerSQL Server Integration ServicesIntegration Services ne répondent pas complètement à vos besoins, vous pouvez développer vos propres types d’objets personnalisés, notamment les suivants :When the control flow and data flow objects that are included with SQL ServerSQL Server Integration ServicesIntegration Services do not completely meet your requirements, you can develop many types of custom objects on your own including:

  • Tâches personnalisées.Custom tasks.

  • Gestionnaires de connexions personnalisés.Custom connection managers. Connectez-vous aux sources de données externes qui ne sont pas prises en charge actuellement.Connect to external data sources that are not currently supported.

  • Modules fournisseurs d’informations personnalisés.Custom log providers. Enregistrez des événements de package dans des formats qui ne sont pas pris en charge actuellement.Log package events in formats that are not currently supported.

  • Énumérateurs personnalisés.Custom enumerators. Prenez en charge l'itération sur un jeu d'objets ou de formats de valeurs qui ne sont pas pris en charge actuellement.Support iteration over a set of objects or values formats that are not currently supported.

  • Composants de flux de données personnalisés.Custom data flow components. Peuvent être configurés en tant que sources, transformations ou destinations.Can be configured as sources, transformations, or destinations.

    Le modèle objet Integration ServicesIntegration 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.The Integration ServicesIntegration Services object model facilitates this custom development with base classes that provide a consistent and reliable framework for your custom implementation.

    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.If you do not have to reuse custom functionality across multiple packages, the Script task and the Script component give you the full power of a managed programming language with significantly less infrastructure code to write. Pour plus d’informations, consultez Comparaison des solutions de script et des objets personnalisés.For more information, see Comparing Scripting Solutions and Custom Objects.

Étapes de développement d'un objet personnalisé pour Integration ServicesSteps in Developing a Custom Object for Integration Services

Lorsque vous développez un objet personnalisé à utiliser dans Integration ServicesIntegration 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 ServicesIntegration Services.When you develop a custom object for use in Integration ServicesIntegration Services, you develop a Class Library (a DLL) that will be loaded at design time and run time by SSIS Designer and by the Integration ServicesIntegration Services runtime. 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.The most important methods that you must implement are not methods that you call from your own code, but methods that the runtime calls at appropriate times to initialize and validate your component and to invoke its functionality.

Voici les étapes à suivre pour développer un objet personnalisé :Here are the steps that you follow in developing a custom object:

  1. Créez un projet de type Bibliothèque de classes dans votre langage de programmation managé préféré.Create a new project of type Class Library in your preferred managed programming language.

  2. Héritez de la classe de base appropriée, comme indiqué dans le tableau suivant.Inherit from the appropriate base class, as shown in the following table.

  3. Appliquez l'attribut approprié à votre nouvelle classe, comme indiqué dans le tableau suivant.Apply the appropriate attribute to your new class, as shown in the following table.

  4. Remplacez les méthodes de la classe de base comme requis et écrivez le code des fonctionnalités personnalisées de votre objet.Override the methods of the base class as required and write code for the custom functionality of your object.

  5. Générez éventuellement une interface utilisateur personnalisée pour votre composant.Optionally, build a custom user interface for your component. 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é.For ease of deployment, you may want to develop the user interface as a separate project within the same solution, and to build it as a separate assembly.

  6. (Facultatif) Affichez un lien vers des exemples et contenus d’Aide pour l’objet personnalisé dans la Boîte à outils SSIS.Optionally, display a link to samples and Help content for the custom object, in the SSIS Toolbox.

  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.Build, deploy, and debug your new custom object as described in Building, Deploying, and Debugging Custom Objects.

Classes de base, attributs et méthodes importantesBase Classes, Attributes, and Important Methods

Ce tableau constitue une référence simple aux éléments les plus importants du modèle objet Integration ServicesIntegration Services pour chaque type d'objet personnalisé que vous pouvez développer.This table provides an easy reference to the most important elements in the Integration ServicesIntegration Services object model for each type of custom object that you can develop.

Objet personnaliséCustom object Classe de baseBase class AttributeAttribute Méthodes importantesImportant methods
TâcheTask Task DtsTaskAttribute Execute
Gestionnaire de connexionsConnection manager ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnectionAcquireConnection, ReleaseConnection
Module fournisseur d'informationsLog provider LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLogOpenLog, Log, CloseLog
ÉnumérateurEnumerator ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Composant de flux de donnéesData flow component PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInputProvideComponentProperties, PrimeOutput, ProcessInput

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.To display a link in the SSIS Toolbox to samples and Help content for a custom object written in managed code, use the following properties.

Interface utilisateur personnaliséeProviding a Custom User Interface

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.To allow users of your custom object to configure its properties, you may have to develop a custom user interface also. 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.In those cases where a custom user interface is not strictly required, you may choose to create one to provide a more user-friendly interface than the default editor.

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 ServicesIntegration 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.In a custom user interface project or assembly, you generally have two classes —a class that implements an Integration ServicesIntegration Services interface for user interfaces for the specific type of custom object, and the Windows form that it displays to gather information from the user. Les interfaces que vous implémentez comportent uniquement quelques méthodes et une interface utilisateur personnalisée n'est pas difficile à développer.The interfaces that you implement have only a few methods, and a custom user interface is not difficult to develop.

Note

De nombreux modules fournisseurs d’informations Integration ServicesIntegration 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.Many Integration ServicesIntegration Services log providers have a custom user interface that implements IDtsLogProviderUI and replaces the Configuration text box with a filtered drop-down list of available connection managers. Toutefois, les interfaces utilisateur personnalisées des modules fournisseurs d'informations personnalisés ne sont pas implémentées dans cette version de Integration ServicesIntegration Services.However custom user interfaces for custom log providers are not implemented in this release of Integration ServicesIntegration Services. La spécification d'une valeur pour la propriété UITypeName de l'objet DtsLogProviderAttribute est sans effet.Specifying a value for the UITypeName property of the DtsLogProviderAttribute has no effect.

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é.The following table provides an easy reference to the interfaces that you must implement when you develop a custom user interface for each type of custom object. 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.It also explains what the user sees if you choose not to develop a custom user interface for your object, or if you fail to link your object to its user interface by using the UITypeName property in the object's attribute. 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é.Although the powerful Advanced Editor may be satisfactory for a data flow component, the Properties window is a less user-friendly solution for tasks and connection managers, and a custom ForEach enumerator cannot be configured at all without a custom form.

Objet personnaliséCustom object Classe de base pour interface utilisateurBase class for user interface Comportement d'édition par défaut si aucune interface utilisateur personnalisée n'est fournieDefault editing behavior if no custom user interface is provided
TâcheTask IDtsTaskUI Fenêtre Propriétés uniquementProperties window only
Gestionnaire de connexionsConnection manager IDtsConnectionManagerUI Fenêtre Propriétés uniquementProperties window only
Module fournisseur d'informationsLog provider IDtsLogProviderUI

(Non implémenté dans Integration ServicesIntegration Services.)(Not implemented in Integration ServicesIntegration Services)
Zone de texte dans la colonne ConfigurationText box in Configuration column
ÉnumérateurEnumerator ForEachEnumeratorUI Fenêtre Propriétés uniquement.Properties window only. La zone Configuration de l'énumérateur de l'éditeur est vide.Enumerator Configuration area of editor is empty.
Composant de flux de donnéesData flow component IDtsComponentUI Éditeur avancéAdvanced Editor

Ressources externesExternal Resources

Voir aussiSee Also

Persistance des objets personnalisés Persisting Custom Objects
Génération, déploiement et débogage d’objets personnalisésBuilding, Deploying, and Debugging Custom Objects