Generar, implementar y depurar objetos personalizados
Después de haber escrito el código para un objeto personalizado de Integration Services, debe generar, implementar e integrar el ensamblado en el Diseñador SSIS para hacerlo disponible para su uso en paquetes, asimismo, probarlo y depurarlo.
Pasos para generar, implementar y depurar un objeto personalizado para Integration Services
Ya ha escrito la funcionalidad personalizada para el objeto. Ahora tiene que probarlo y hacer que esté disponible para los usuarios. Los pasos son muy similares para todos los tipos de objetos personalizados que puede crear para Integration Services.
A continuación figuran los pasos que debe seguir para generar, implementar y depurar el objeto:
Firme el ensamblado que se va a generar con un nombre seguro.
Genere el ensamblado.
Implemente el ensamblado, para ello, muévalo o cópielo en la carpeta de Integration Services adecuada.
Instale el ensamblado en la memoria caché de ensamblados global (GAC).
Agregue el objeto al cuadro de herramientas, cuando el objeto es un componente de tarea o de flujo de datos.
Solucione los problemas de la implementación, si es necesario.
Pruebe y depure el código.
Firmar el ensamblado
Cuando se tiene pensado compartir un ensamblado, se debe instalar en la memoria caché de ensamblados global. Una vez agregado el ensamblado a la memoria caché de ensamblados global, aplicaciones como Business Intelligence Development Studio pueden utilizarlo. Un requisito de la memoria caché de ensamblados global es que el ensamblado se debe firmar con un nombre seguro, que garantiza que el ensamblado es único de forma global. Un ensamblado con nombre seguro especifica un nombre completo que incluye el nombre del ensamblado, la referencia cultural, la clave pública y el número de versión. El motor en tiempo de ejecución utiliza esta información para localizar el ensamblado y distinguirlo entre otros ensamblados con el mismo nombre.
Para firmar un ensamblado con un nombre seguro, es necesario crear o tener antes un par de claves publica y privada. Este par de claves criptográficas pública y privada se usa al realizar la compilación para crear un ensamblado con nombre seguro.
Para obtener más información sobre los nombres seguros y los pasos que debe seguir para firmar un ensamblado, consulte los temas siguientes en la documentación del SDK de .NET Framework:
Ensamblados con nombre seguro
Crear un par de claves
Firmar un ensamblado con un nombre seguro
Puede firmar con facilidad el ensamblado con un nombre seguro en Visual Studio durante la generación. En el cuadro de diálogo Propiedades del proyecto, seleccione la ficha Firma. Seleccione la opción para Firmar el ensamblado y, a continuación, proporcione la ruta de acceso del archivo de claves (.snk).
Generar el ensamblado
Después de firmar el proyecto, debe generar o volver a generar el proyecto o la solución utilizando los comandos disponibles en el menú Generar de BI Development Studio. La solución puede contener un proyecto independiente para una interfaz de usuario personalizada, que también se debe firmar con un nombre seguro y se puede generar al mismo tiempo.
El método más cómodo para realizar los dos pasos siguientes, desplegar el ensamblado e instalarlo en la memoria caché de ensamblados global, es crear script de estos pasos como un evento posterior a la generación en Visual Studio. Los eventos de compilación están disponibles en la página Compilar de Propiedades del proyecto para un proyecto de Visual Basic y en la página Eventos de compilación para un proyecto de C#. Es necesaria la ruta de acceso completa para las utilidades de símbolo del sistema como gacutil.exe. Son necesarias las comillas tipográficas alrededor de las rutas de acceso que contienen los espacios y alrededor de las macros como $ (TargetPath) que se expanden a las rutas de acceso que contienen los espacios.
A continuación figura un ejemplo de una línea de comandos del evento posterior a la generación para un proveedor de registro personalizado:
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -u $(TargetName)
"C:\Program Files\Microsoft Visual Studio 9.0\SDK\v3.5\Bin\gacutil.exe" -i $(TargetFileName)
copy $(TargetFileName) "C:\Program Files\Microsoft SQL Server\100\DTS\LogProviders "
Implementar el ensamblado
El Diseñador SSIS busca los objetos personalizados disponibles para su uso en paquetes enumerando los archivos buscados en una serie de carpetas que se crean cuando se instala SQL Server Integration Services. Cuando se utilizan los valores de instalación predeterminados de SQL Server, este conjunto de carpetas se encuentra bajo C:\Archivos de programa\Microsoft SQL Server\100\DTS. Sin embargo, si crea un programa de instalación para el objeto personalizado, debe comprobar el valor de la clave del Registro HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\100\SSIS\Setup\DtsPath para comprobar la ubicación de esta carpeta.
Puede colocar el ensamblado en la carpeta de dos maneras:
Copiar o mover el ensamblado compilado a la carpeta adecuada después de generarlo. (Para su comodidad, puede incluir el comando de copia en un evento posterior a la generación).
Generar el ensamblado directamente en la carpeta adecuada.
Las carpetas de implementación siguientes bajo C:\Archivos de program\Microsoft SQL Server\100\DTS se utilizan para los distintos tipos de objetos personalizados:
Objeto personalizado |
Carpeta de implementación |
---|---|
Tarea |
Tasks |
Administrador de conexión |
Connections |
Proveedor de registro |
LogProviders |
Componente de flujo de datos |
PipelineComponents |
Nota
Los ensamblados se copian en estas carpetas para admitir la enumeración de tareas disponibles, administradores de conexión, etc. Por consiguiente no tiene que implementar los ensamblados que contienen solo la interfaz de usuario personalizada para los objetos personalizados en estas carpetas.
Instalar el ensamblado en la memoria caché de ensamblados global
Para instalar el ensamblado de tarea en la memoria caché de ensamblados global (GAC), utilice la herramienta de línea de comandos gacutil.exe o arrastre los ensamblados al directorio %system%\assembly. Para su comodidad, puede incluir también la llamada a gacutil.exe en un evento posterior a la generación.
El comando siguiente instala un componente denominado MyTask.dll en la GAC utilizando gacutil.exe.
gacutil /iF MyTask.dll
Se debe cerrar y volver a abrir el Diseñador SSIS después de instalar una nueva versión del objeto personalizado. Si ha instalado versiones anteriores del objeto personalizado en la memoria caché de ensamblados global, debe quitarlos antes de instalar la nueva versión. Para desinstalar un ensamblado, ejecute gacutil.exe y especifique el nombre del ensamblado con la opción /u.
Para obtener más información sobre la memoria caché de ensamblados global, vea Herramienta Caché de ensamblados global (Gactutil.exe) en las herramientas de .NET Framework.
Agregar un componente de tarea o de flujo de datos al cuadro de herramientas
Una vez implementado el objeto personalizado e instalado en la memoria caché de ensamblados global, se puede utilizar en Business Intelligence Development Studio como cualquier objeto incluido con SQL Server Integration Services. Sin embargo, se debe agregar explícitamente al cuadro de herramientas.
Para agregar un componente personalizado al cuadro de herramientas
Haga clic con el botón secundario en el cuadro de herramientas y, a continuación, haga clic en Elegir elementos.
En el cuadro de diálogo Elegir elementos del cuadro de herramientas, haga clic en la ficha Elementos de flujo de control SSIS para una tarea o la ficha Elementos de flujo de datos SSIS para un componente de flujo de datos.
Haga clic en la casilla junto al componente y, después, haga clic en Aceptar.
Nota
Si el componente no se muestra en la lista, puede hacer clic en Examinar para buscarlo. Pero en este caso puede que no esté instalado correctamente.
Solucionar problemas relacionados con la implementación
Si el objeto personalizado aparece en el cuadro de herramientas o en la lista de objetos disponibles, pero no puede agregarlo a un paquete, intente lo siguiente:
Busque en la memoria caché de ensamblados global varias versiones del componente. Si hay varias versiones del componente en la memoria caché de ensamblados global, el diseñador quizá no pueda cargar el componente. Elimine todas las instancias del ensamblado de la memoria caché de ensamblados global y vuelva a agregar el ensamblado.
Asegúrese de que solo existe una instancia única del ensamblado en la carpeta de implementación.
Restablezca el cuadro de herramientas.
Adjunte Visual Studio a devenv.exe y establezca un punto de interrupción para pasar por el código de inicialización para asegurarse de que no se produce ninguna excepción.
Probar y depurar el código
El enfoque más simple para depurar los métodos en tiempo de ejecución de un objeto personalizado es iniciar dtexec.exe desde Visual Studio después de generar el objeto personalizado y ejecutar un paquete que utiliza el componente.
Si desea depurar los métodos en tiempo de diseño del componente, como el método Validate, abra un paquete que utiliza el componente en una segunda instancia de Visual Studio y adjúntelo al proceso devenv.exe.
Si desea también depurar los métodos en tiempo de ejecución del componente cuando un paquete está abierto y ejecutándose en el diseñador SSIS, debe forzar una pausa en la ejecución del paquete para que pueda adjuntarlo también al proceso DtsDebugHost.exe.
Para depurar los métodos en tiempo de ejecución de un objeto adjuntándolos a dtexec.exe
Firme e integre el proyecto en la configuración de depuración, impleméntelo e instálelo en la memoria caché de ensamblados global tal y como se describe en este tema.
En la ficha Depurar de Propiedades del proyecto, seleccione Programa externo de inicio como la Acción de inicio y busque dtexec.exe, que se instala de forma predeterminada en C:\Archivos de programa\Microsoft SQL Server\100\DTS\Binn.
En el cuadro de texto Opciones de la línea de comandos, en Opciones de inicio, escriba los argumentos de la línea de comandos necesarios para ejecutar un paquete que utiliza el componente. A menudo el argumento de la línea de comandos estará compuesto del modificador /F[ILE] seguido de la ruta de acceso y nombre de archivo del archivo .dtsx. Para obtener más información, vea Utilidad dtexec (Herramienta de SSIS).
Establezca los puntos de interrupción en el código fuente donde sea adecuado en los métodos en tiempo de ejecución del componente.
Ejecute el proyecto.
Para depurar los métodos en tiempo de diseño de un objeto personalizado adjuntándolos a Business Intelligence Development Studio
Firme e integre el proyecto en la configuración de depuración, impleméntelo e instálelo en la memoria caché de ensamblados global tal y como se describe en este tema.
Establezca puntos de interrupción en el código fuente donde se adecuado en los métodos en tiempo de diseño del objeto personalizado.
Abra una segunda instancia de Visual Studio y cargue un proyecto de Integration Services que contiene un paquete que utiliza el objeto personalizado.
En la primera instancia de Visual Studio, adjúntelo a la segunda instancia de devenv.exe en la que se carga el paquete seleccionando Adjuntar al proceso en el menú Depurar de la primera instancia.
Ejecute el paquete desde la segunda instancia de Visual Studio.
Para depurar los métodos en tiempo de ejecución de un objeto personalizado adjuntándolos a Business Intelligence Development Studio
Después de haber completado los pasos enumerados en el procedimiento anterior, fuerce una pausa en la ejecución del paquete para que se pueda adjuntar a DtsDebugHost.exe. Para forzar esta pausa agregue un punto de interrupción al evento OnPreExecute o agregue una tarea Script al proyecto y escriba el script que muestra un cuadro de mensaje modal.
Ejecute el paquete. Cuando se produzca la pausa, cambie a la instancia de Visual Studio en la que está abierto el código del proyecto y seleccione Adjuntar al proceso en el menú Depurar. Asegúrese de adjuntarlo a la instancia de DtsDebugHost.exe enumerada como Administrado, x86 en la columna Tipo, no a la instancia enumerada como solo x86.
Vuelva al paquete en pausa y continúe más allá del punto de interrupción o haga clic en Aceptar para descartar el cuadro de mensaje generado por la tarea Script y continuar la ejecución y depuración del paquete.
|