De programacion y otros demonios

martes, 22 de junio de 2010

SQL 2008 - Script task failed because sgen.exe was not found

Este error se me esta presentando al agregar la referencia web en un script task de un paquete SSIS que apunta al web service de reporting services en 2008. 

"Task failed because 'sgen.exe' was not found, or the correct Microsoft Windows SDK is not installed"
Que sucede?  la configuracion por default del script task crea un serialization assembly, pero éste ultimo requiere archivos que no encuentran (no entiendo el porque), en fin, lei muchos blogs la solución de algunos era buscar unos archivos copiarlos y pegarlos a mano, pero me parece muy "machetero" asi que seguí buscando y lo pude solucionar simplemente desactivando el "Generate serialization assembly".
<< Leer más >>

Etiquetas:

jueves, 17 de junio de 2010

SSIS - Paso a paso como ejecutar un paquete SSIS desde Reporting Services

Queridos colegas les comparto mi experiencia para ayudar a hacer del mundo un lugar mejor; tenía un reporte (Reporting services) que funcionaba bien, el usuario ingresaba y ejecutaba el reporte, luego lo exportaba a excel; pero después de un año por la cantidad de datos en la base de datos el reporte se demoraba demasiado; entonces el usuario lo ejecutaba desde el internet explorer y se iba a hacer otras tareas cuando regresaba y trataba de exportar a excel el reporte ya generado, la ventana de internet explorer le decia Error de expiración de sesión y no se podía exportar.

Mi solución:  Ejecutar de forma asincrona el reporte y que luego de generado, informe al usuario; técnicamente debo dividir el problema en 2: una parte ejecutada de forma sincrona (la parte que visualiza el usuario al ingresar los parámetros) y otra parte de forma asincrona (la que crea el reporte y lo exporta). 

Tengo un reporte que solo sirve para pedir los parámetros al usuario (llamado "parametros_ventas_x_producto"), y que manda a ejecutar un paquete SSIS, luego saca un mensaje en un textbox informando que apenas termine de generarse el reporte, se enviará un correo al usuario. El primer paquete SSIS  (llamado "SSRS_executeSSIS") lo que hace es llamar otro paquete (llamado "SSIS_executeReporte") por medio del componente "Execute Process Task" y luego con un componente "DataReader Destination" le informa al primer reporte de parametros que todo esta OK.

El segundo paquete SSIS ("SSIS_executeReporte") ejecuta a través de código Visual Basic el reporte original (llamado "ventas_x_producto") que es muy demorado y lo guardar como un archivo de excel en el disco duro; por último envía el correo al usuario informando que ya se generó el reporte y la ubicación de donde lo puede tomar.

Para complicar un poco las cosas, yo quiero hacer todo este proceso de forma genérica es decir, que los dos paquetes SSIS me sirvan para ejecutar cualquier reporte, sin necesidad de cambiar nada en su codigo; asi que por favor presten especial atención al manejo que le doy a los parámetros del reporte.

Estoy trabajando con la version 2008 de los productos Microsoft, y todo está instalado en el mismo server (esto es importante pues al ejecutar el paquete SSIS se debe colocar la ruta en el DD, por lo que no podría ser una ruta en Red).

:: Aquí les dejo el paso a paso :::

<< Leer más >>

Etiquetas: ,

miércoles, 16 de junio de 2010

SSIS - Paso a paso package como datasource para Reporting Services

Y quien querría hacer algo asi ?....   imagina este escenario: tienes varios reportes que tus usuarios finales autonomamente ejecutan pero que requieren cierta manipulación de los datos, como la que proveen los paquetes SSIS por ej. el componente lookup, envío de correo, conexion por ftp etc. 

La solución que propongo es:  crear un paquete SSIS que lea de la base de datos la información, haga los calculos y tareas que se requieran y por último estos datos sirvan de entrada al reporte. :) facil ah? solo sigue estos pasos.
<< Leer más >>

Etiquetas:

martes, 15 de junio de 2010

TSQL: Concatenar todos los valores de una columna en un solo string

How to : Concatenate strings from a column into a single row

Yo cree un store procedure con el siguiente codigo

DECLARE @colors VARCHAR(1024)

SELECT      @colors = COALESCE(@colors + ',', '') + producto
FROM  (
            SELECT      rtrim(ltrim(descripcion)) + ' '+ LTRIM(rtrim(presentacion)) +' - '+ cast(codigo as varchar(5)) as producto

            FROM  [maestra de productos] with(nolock)
            ) p

-- SELECT Colors = @colors -- Esto es para ver que tiene mi variable.

Etiquetas:

viernes, 11 de junio de 2010

No puedo agregar una referencia en BIDS 2008

Esta es otra de las anécdotas que me gusta poner en mi blog, en un paquete SSIS (BIDS) no puedo agregar referencias dentro de un Script Task, me dice "No template information found.  See the application log in Event Viewer for more details."


Al revisar el log de eventos de windows aparece:

"The global template information is out of date. Regenerate the templates by running VSTA.exe /installvstemplates or reinstalling the application.  Note: corrective action requires Administrator privileges."


Leí muchos blogs y artículos en todos tenían como solución ejecutar comandos de VSTA o copiar y pegar a mano la carpeta de templates,etc... nada de eso funciona !!... la realidad es que existe un bug en BIDS 2008 cuando el Script Task tiene por lenguaje a Visual Basic, cosa que no pasa cuando eliges a C#. 

No encontré ninguna solución real, pero sí un camino alternativo para poder consumir un web services que me ejecuta de forma asíncrona un reporte de reporting services que era mi problema original (lo publicaré en el blog más adelante); lo que hice fue salirme por la tangente....

Creé un paquete en BIDS 2005, sí la versión anterior funciona bien; agregué mi script task, agregué las referencias que necesitaba, lo guardé y por último lo abrí en BIDS 2008.. voila !...  funcionan las referencias !!

Si pudiste encontrar otra solución, por favor deja un comentario para todos.

Etiquetas: