Archive for June, 2007

No se puede ejecutar un ejecutable (sic) desde un DTS

Friday, June 29th, 2007

Otro problema con el que me tope el dia de hoy, de esos con soluciones absurdas.

Para los que no conocen los DTS de SQL server, estos son simplemente una forma de agrupar varias tareas y posteriormente ejecutarlas en un solo movimiento. Puedes por ejemplo, traer un archivo de texto, importarlo a una tabla de SQL, y enviar un mail avisando que ya se realizo la tarea. Tiene muchas utilidades practicas.

Muy bien, lo que yo hice en mi DTS fue transformar un archivo de texto en un archivo de Excel, de manera que genero varias hojas de excel y algunas columnas son calculos de otras columnas. Para hacer esto, primero tengo que traer el archivo de texto de algun lado. Asi que lo mas sencillo para mi fue crear un batch que hiciera la tarea de traer este archivo y posteriormente ejecutarlo como la primera tarea de mi DTS.

Todo funcionaba bien en mis pruebas. El problema es que este DTS se manda a ejecutar desde una pagina web, y cuando lo hacia de esta manera, el bat no se ejecutaba.

Mi unica pista era este error en el log del DTS:

Step Error Source: Microsoft Data Transformation Services (DTS) Package
Step Error Description:CreateProcessTask ‘DTSTask_DTSCreateProcessTask_1′:  Process returned code 1, which does not match the specified SuccessReturnCode of 0.
Step Error code: 80040496
Step Error Help File:sqldts80.hlp
Step Error Help Context ID:4900

Despues de escarbar un poco, di con la razon.

Resulta que la tarea de ejecutar archivos del DTS no (siempre) ejecuta el proceso en su ubicacion original, sino que hace una copia del mismo y desde ahi lo ejecuta. Al correrlo desde el Enterprise Manager todo funcionaba bien, pero al ejecutarlo remotamente, lo copiaba a alguna direccion desconocida. Y como mi bat tiene algunas direcciones relativas, pues no trabajaba como era debido.

La solucion: antes de ejecutar la tarea en el bat, tuve que cerciorarme que estuviera trabajando en el directorio correcto.

Esto aplica para cada aplicacion que desees correr desde un DTS, primero asegurate que estas ejecutandola en el sitio indicado. ∞

Server Application Unavailable?¡ Application Pool en IIS

Friday, June 29th, 2007

Un buen consejo que me dieron es que usara mi blog para llevar una bitacora de lo que he aprendido, de esta manera no lo olvidare. Asi que he aqui mi historia de un problema que acabo de tener, con su correspondiente solucion.

Hay un servidor aqui en el trabajo con Windows 2003 Server, en el que tengo algunos Web Services y aplicaciones ASP.Net, que hice hace algun tiempo, y que corren bajo el framework 1.1. El dia de ayer me reportaron de que estos servicios habian estado teniendo comportamientos extraños, misteriosamente habian dejado de funcionar.

Normalmente es malo que algo que funciona deje de funcionar sin causa aparente. Asi que me puse a investigar.

Lo primero que intente fue ver si el fallo continuaba, lo cual no resulto asi. Pense que eran de esas cosas extrañas que a veces hacen las computadoras y lo deje en paz.

Sin embargo, al querer revisar una pagina que subi apenas ayer, me tope con este error:

Server Application Unavailable

The web application you are attempting to access on this web server is currently unavailable. Please hit the “Refresh” button in your web browser to retry your request.

Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server. Please review this log entry to discover what caused this error to occur.

Fue aqui donde supe que algo malo habia ocurrido.

Lo unico diferente es que esta pagina corre en usando el Framework 2.0. Asi que googleando un poco, descubri mas sobre mi problema y su solucion. Los “application pool”

Resulta que el IIS 6 permite una caracteristica llamada Application Pool. Esta permite aislar los procesos en los que corren nuestras aplicaciones, de manera que si ocurre un error con alguno, no afecta a los demas que no corran en el mismo application pool. Resulta que el IIS permite que varias versiones del framework vivan y se ejecuten felices en el mismo servidor, pero no en el mismo proceso (es decir, en el mismo application pool). La solucion es bien sencilla. Crear un nuevo application pool en el servidor para cada framework.

solucion.JPG

Hecho esto, y poniendo el sitio nuevo a correr en ese application pool, todo se resolvio.

Mas informacion sobre application pool en este sitio. ∞