Desarrollar objetos personalizados para Integration ServicesDeveloping Custom Objects for Integration Services

Cuando el flujo de control y los datos de flujo de objetos que se incluyen con SQL ServerSQL Server Integration ServicesIntegration Services no cumplen completamente sus requisitos, puede desarrollar muchos tipos de objetos personalizados incluyendo: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:

  • Tareas personalizadas.Custom tasks.

  • Administradores de conexión personalizados.Custom connection managers. Conexión a orígenes de datos externos que no son compatibles actualmente.Connect to external data sources that are not currently supported.

  • Proveedores de registro personalizados.Custom log providers. Eventos de paquete de registro en formatos que no son compatibles actualmente.Log package events in formats that are not currently supported.

  • Enumeradores personalizados.Custom enumerators. Admite iteración sobre un conjunto formatos de objetos o valores que no son compatibles actualmente.Support iteration over a set of objects or values formats that are not currently supported.

  • Componentes de flujo de datos personalizados.Custom data flow components. Se pueden configurar como orígenes, transformaciones o destinos.Can be configured as sources, transformations, or destinations.

    El modelo de objetos Integration ServicesIntegration Services facilita este desarrollo personalizado con clases base que proporcionan un marco coherente y confiable para su implementación personalizada.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 no tiene que reutilizar la funcionalidad personalizada por varios paquetes, la tarea Script y el componente de script le proporcionan toda la eficacia de un lenguaje de programación administrado con significativamente menos código de infraestructura para escribir.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. Para obtener más información, consulte comparar soluciones de Scripting y objetos personalizados.For more information, see Comparing Scripting Solutions and Custom Objects.

Pasos para desarrollar un objeto personalizado para Integration ServicesSteps in Developing a Custom Object for Integration Services

Cuando se desarrollar un objeto personalizado para su uso en Integration ServicesIntegration Services, se desarrolla una biblioteca de clases (una DLL) que se cargará en tiempo de diseño y tiempo de ejecución por el Diseñador SSIS y por el tiempo de ejecución de 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. Los métodos más importantes que debe implementar no son métodos a los que llama desde su propio código, sino métodos que el tiempo de ejecución llama en los momentos adecuados para inicializar y validar su componente e invocar su funcionalidad.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.

A continuación figuran los pasos que se deben seguir para desarrollar un objeto personalizado:Here are the steps that you follow in developing a custom object:

  1. Cree un nuevo proyecto de tipo biblioteca de clases en su lenguaje de programación administrado preferido.Create a new project of type Class Library in your preferred managed programming language.

  2. Herede de la clase base adecuada, como se muestra en la tabla siguiente.Inherit from the appropriate base class, as shown in the following table.

  3. Aplique el atributo adecuado a su nueva clase, como se muestra en la tabla siguiente.Apply the appropriate attribute to your new class, as shown in the following table.

  4. Invalide los métodos de la clase base tal y como se requiere, y escriba el código para la funcionalidad personalizada de su objeto.Override the methods of the base class as required and write code for the custom functionality of your object.

  5. Opcionalmente, construya una interfaz de usuario personalizada para su componente.Optionally, build a custom user interface for your component. Para facilitar la implementación, puede que desee desarrollar la interfaz de usuario como un proyecto independiente dentro de la misma solución y generarlo como un ensamblado independiente.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. Si lo desea, mostrar un vínculo a ejemplos y al contenido de ayuda para el objeto personalizado, en el cuadro de herramientas de SSIS.Optionally, display a link to samples and Help content for the custom object, in the SSIS Toolbox.

  7. Compilar, implementar y depurar el nuevo objeto personalizado tal y como se describe en compilar, implementar y depurar objetos personalizados.Build, deploy, and debug your new custom object as described in Building, Deploying, and Debugging Custom Objects.

Clases base, atributos y métodos importantesBase Classes, Attributes, and Important Methods

En esta tabla se proporciona una referencia sencilla de los elementos más importantes en el modelo de objetos Integration ServicesIntegration Services para cada tipo de objeto personalizado que puede desarrollar.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.

Objeto personalizadoCustom object Clase baseBase class AtributoAttribute Métodos importantesImportant methods
TareaTask Task DtsTaskAttribute Execute
Administrador de conexionesConnection manager ConnectionManagerBase DtsConnectionAttribute AcquireConnection, ReleaseConnectionAcquireConnection, ReleaseConnection
Proveedor de registroLog provider LogProviderBase DtsLogProviderAttribute OpenLog, Log, CloseLogOpenLog, Log, CloseLog
EnumeradorEnumerator ForEachEnumerator DtsForEachEnumeratorAttribute GetEnumerator
Componente de flujo de datosData flow component PipelineComponent DtsPipelineComponentAttribute ProvideComponentProperties, PrimeOutput, ProcessInputProvideComponentProperties, PrimeOutput, ProcessInput

Para mostrar un vínculo en el cuadro de herramientas de SSIS a ejemplos y al contenido de ayuda para un objeto personalizado escrito en código administrado, utilice las siguientes propiedades.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.

Proporcionar una interfaz de usuario personalizadaProviding a Custom User Interface

Para permitir a los usuarios de su objeto personalizado configurar sus propiedades, puede que tenga que desarrollar también una interfaz de usuario personalizada.To allow users of your custom object to configure its properties, you may have to develop a custom user interface also. En aquellos casos donde no se requiere una interfaz de usuario personalizada de forma estricta, puede que decida crear una para proporcionar una interfaz más fácil de comprender que el editor predeterminado.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.

En un proyecto o ensamblado personalizado de la interfaz de usuario, generalmente tiene dos clases: una clase que implementa una interfaz Integration ServicesIntegration Services para las interfaces de usuario para el tipo específico de objeto personalizado y el formulario Windows Forms que se muestra para recopilar información del usuario.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. Las interfaces que implementa tienen solo unos cuantos métodos y una interfaz de usuario personalizada que no es difícil de desarrollar.The interfaces that you implement have only a few methods, and a custom user interface is not difficult to develop.

Nota

Muchos Integration ServicesIntegration Services proveedores de registro tienen una interfaz de usuario personalizada que implementa IDtsLogProviderUI y reemplaza el configuración cuadro de texto con una lista desplegable filtrada de administradores de conexión 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. Sin embargo, las interfaces de usuario personalizadas para los proveedores de registro personalizados no se implementan en esta versión de Integration ServicesIntegration Services.However custom user interfaces for custom log providers are not implemented in this release of Integration ServicesIntegration Services. Especificar un valor para la propiedad UITypeName de DtsLogProviderAttribute no tiene ningún efecto.Specifying a value for the UITypeName property of the DtsLogProviderAttribute has no effect.

La tabla siguiente proporciona una referencia sencilla para las interfaces que debe implementar al desarrollar una interfaz de usuario personalizada para cada tipo de objeto personalizado.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. También se explica lo que el usuario ve si decide no desarrollar una interfaz de usuario personalizada para el objeto, o si no puede vincular el objeto a su interfaz de usuario mediante la UITypeName propiedad en el atributo del objeto.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. Aunque el potente editor avanzado puede resultar satisfactorio para un componente de flujo de datos, la ventana Propiedades es una solución menos fácil de usar en tareas y administradores de conexión, y un enumerador ForEach personalizado no se puede configurar en absoluto sin un formulario personalizado.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.

Objeto personalizadoCustom object Clase base para la interfaz de usuarioBase class for user interface Comportamiento de edición de valor predeterminado si no se proporciona ninguna interfaz de usuario personalizadaDefault editing behavior if no custom user interface is provided
TareaTask IDtsTaskUI Solo la ventana PropiedadesProperties window only
Administrador de conexionesConnection manager IDtsConnectionManagerUI Solo la ventana PropiedadesProperties window only
Proveedor de registroLog provider IDtsLogProviderUI

(No se implementa en Integration ServicesIntegration Services)(Not implemented in Integration ServicesIntegration Services)
Cuadro de texto configuración columnaText box in Configuration column
EnumeradorEnumerator ForEachEnumeratorUI Solo la ventana Propiedades.Properties window only. El área del editor Configuración de enumeradores está vacía.Enumerator Configuration area of editor is empty.
Componente de flujo de datosData flow component IDtsComponentUI Editor avanzadoAdvanced Editor

Recursos externosExternal Resources

Vea tambiénSee Also

Conservar objetos personalizados Persisting Custom Objects
Generar, implementar y depurar objetos personalizadosBuilding, Deploying, and Debugging Custom Objects