Desarrollar objetos personalizados para Integration Services
Se aplica a: SQL Server SSIS Integration Runtime en Azure Data Factory
Cuando los objetos de flujo de datos y flujo de control que se incluyen con SQL Server Integration Services no cumplen completamente los requisitos, puede desarrollar muchos tipos de objetos personalizados, entre los que se incluyen:
Tareas personalizadas.
Administradores de conexión personalizados. Conexión a orígenes de datos externos que no son compatibles actualmente.
Proveedores de registro personalizados. Eventos de paquete de registro en formatos que no son compatibles actualmente.
Enumeradores personalizados. Admite iteración sobre un conjunto formatos de objetos o valores que no son compatibles actualmente.
Componentes de flujo de datos personalizados. Se pueden configurar como orígenes, transformaciones o destinos.
El modelo de objetos Integration Services facilita este desarrollo personalizado con clases base que proporcionan un marco coherente y confiable para su implementación personalizada.
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. Para obtener más información, consulte Comparing Scripting Solutions and Custom Objects (Comparar soluciones de scripting y objetos personalizados).
Pasos para desarrollar un objeto personalizado para Integration Services
Cuando se desarrollar un objeto personalizado para su uso en Integration 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 Services. 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.
A continuación figuran los pasos que se deben seguir para desarrollar un objeto personalizado:
Cree un nuevo proyecto de tipo biblioteca de clases en su lenguaje de programación administrado preferido.
Herede de la clase base adecuada, como se muestra en la tabla siguiente.
Aplique el atributo adecuado a su nueva clase, como se muestra en la tabla siguiente.
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.
Opcionalmente, construya una interfaz de usuario personalizada para su componente. 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.
Si lo desea, puede mostrar un vínculo en los ejemplos y en el contenido de ayuda del objeto personalizado, en el Cuadro de herramientas de SSIS.
Compile, implemente y depure el nuevo objeto personalizado tal y como se describe en Building, Deploying, and Debugging Custom Objects (Compilar, implementar y depurar objetos personalizados).
Clases base, atributos y métodos importantes
En esta tabla se proporciona una referencia sencilla de los elementos más importantes en el modelo de objetos Integration Services para cada tipo de objeto personalizado que puede desarrollar.
Objeto personalizado | Clase base | Atributo | Métodos importantes |
---|---|---|---|
Tarea | Task | DtsTaskAttribute | Execute |
Administrador de conexiones | ConnectionManagerBase | DtsConnectionAttribute | AcquireConnection, ReleaseConnection |
Proveedor de registro | LogProviderBase | DtsLogProviderAttribute | OpenLog, , Log, CloseLog |
Enumerador | ForEachEnumerator | DtsForEachEnumeratorAttribute | GetEnumerator |
Componente de flujo de datos | PipelineComponent | DtsPipelineComponentAttribute | ProvideComponentProperties, , PrimeOutput, ProcessInput |
Proporcionar vínculos a ejemplos y al contenido de la Ayuda
Para mostrar un vínculo del Cuadro de herramientas de SSIS en ejemplos y en el contenido de ayuda de un objeto personalizado escrito en código administrado, use las siguientes propiedades.
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Pipeline.DTSPipelineComponentAttribute.HelpKeyword*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.SamplesTag*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpCollection*
Microsoft.SqlServer.Dts.Runtime.DTSTaskAttribute.HelpKeyword*
Para mostrar un vínculo a ejemplos y al contenido de la Ayuda para un objeto personalizado escrito en código nativo, agregue las entradas del archivo de script de Registro (.rgs) de SamplesTag, HelpKeyword y HelpCollection. A continuación se muestra un ejemplo.
val HelpKeyword = s 'sql11.dts.designer.executepackagetask.F1'
val SamplesTag = s 'ExecutePackageTask'
Proporcionar una interfaz de usuario personalizada
Para permitir a los usuarios de su objeto personalizado configurar sus propiedades, puede que tenga que desarrollar también una interfaz de usuario personalizada. 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.
Un proyecto o ensamblado personalizado de la interfaz de usuario suele tener dos clases: una clase que implementa una interfaz Integration Services para las interfaces de usuario para el tipo específico de objeto personalizado y el formulario de Windows Forms que se muestra para recopilar información del usuario. Las interfaces que implementa tienen solo unos cuantos métodos y una interfaz de usuario personalizada que no es difícil de desarrollar.
Nota
Muchos proveedores de registro de Integration Services tienen una interfaz de usuario personalizada que implementa IDtsLogProviderUI y reemplaza el cuadro de texto Configuración con una lista desplegable que filtra los administradores de conexión disponibles. Sin embargo, las interfaces de usuario personalizadas para los proveedores de registro personalizados no se implementan en esta versión de Integration Services. Especificar un valor para la propiedad UITypeName de DtsLogProviderAttribute no tiene ningún efecto.
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. Asimismo, también se explica en esta tabla lo que el usuario ve si decide no desarrollar ninguna interfaz de usuario personalizada del objeto, o si no vincula ese objeto a la interfaz de usuario mediante la propiedad UITypeName en el atributo del objeto. 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.
Objeto personalizado | Clase base para la interfaz de usuario | Comportamiento de edición de valor predeterminado si no se proporciona ninguna interfaz de usuario personalizada |
---|---|---|
Tarea | IDtsTaskUI | Solo la ventana Propiedades |
Administrador de conexiones | IDtsConnectionManagerUI | Solo la ventana Propiedades |
Proveedor de registro | IDtsLogProviderUI (No se implementa en Integration Services) |
Cuadro de texto en la columna Configuración |
Enumerador | ForEachEnumeratorUI | Solo la ventana Propiedades. El área del editor Configuración de enumeradores está vacía. |
Componente de flujo de datos | IDtsComponentUI | Editor avanzado |
Recursos externos
- Entrada de Blog, Visual Studio solution build process give a warning about indirect dependency on the .NET Framework assembly due to SSIS references (El proceso de compilación de la solución de Visual Studio muestra una advertencia acerca de la dependencia indirecta del ensamblado de .NET Framework debido a referencias SSIS) en blogs.msdn.com.
Consulte también
Conservar objetos personalizados
Generar, implementar y depurar objetos personalizados