Augusto Humire Martinez web blog

algo de web-in

Ejecutar aplicaciones desde Sql Server

Poniendonos en el caso de que necesitas ejecutar una tarea cualquiera y que se ejecute usando como criterio algun dato de la base de datos, por ejemplo que se ejecute un demonio cuando el campo fecha de vencimiento este vencida. seria mortal no? o que quieres hacer lo que sea pero a travez de una aplicación o executable como le llaman otros.

El hecho es que es sencillo, entonces ¿Como ejecutar una aplicacion desde sql server?

primero habra que hablitar la ejecucion de aplicaciones en el servidor ya que no esta habilitada por defecto, entonces mostramos las opciones avanzadas antes de modificarlas usando

EXEC sp_configure ‘show advanced options’, 1
GO
RECONFIGURE
GO

ahora lo que resta es habilitar el procedimiento almancenado xp_cmdshell que es el aquel que realmente hace el trabajo de ejecutar la aplicacion

EXEC sp_configure ‘xp_cmdshell‘, 1
GO
RECONFIGURE
GO

Con estas lineas anteriores deberias poder ejecutar cualquier aplicacion usando por ejemplo la siguiente linea

exec xp_cmdshell ‘c:\directorio\miaplicacion.exe’, no_output

de preferencia las aplicaciones que se ejecuten deberan ser capacez de terminarse por si mismas, es decir que si llama a la calculadora de windows, vera que esta aplicacion no es capaz de terminarse asi misma si no solo con la interaccion de un usuario, es decir que para que la calculadora se cierre el usuario tendra que hacer click a la “x” de la ventana o presionar Alt+F4, de otra manera no hay forma de cerrar la calculadora (claro que se puede usar el administrador de tareas, pero se da cuenta que tambien requiere intervencion del usuario?), entonces si ud hace esto

exec xp_cmdshell ‘C:\WINDOWS\system32\calc.exe’, no_output

este realmente se ejecutara pero no se mostrara, por que es un programa que no termina por si mismo y se quedara ejecutado (podra verlo desde el administrador de tareas) y nadie lo podra terminar es decir se quedara en la lista de tareas de windows, entonces de recomendacion es, ejecuten programas que sean capacez de terminarse por si mismo.

En el caso personal ejecuto una aplicacion que genera un excel a partir de los datos de la base de datos y lo almaceno en la carpeta del interesado y el programa termina su ejecucion por si mismo.

bueno en realidad cuando tenemos posibilidad de ejecutar una aplicacion se habre la puerta a la imaginacion y a la habilidad del ejecutable, tenga en cuenta que el dar permiso de ejecucion del procedimiento almacenado xp_cmdshell tambien estamos sujetos a ser mas sensibles a ataques a mayor escala solo si tienen acceso personas extrañas a nuestro entorno o con nuestras funciones, asi que mucha responsabilidad con el tema de ejecutar aplicaciones.

otra cosa a tomar en cuenta es que el dominio en donde se ejecuta la aplicacion es donde se encuentra instalado Sql Server y no donde se encuentra el cliente que pudiera desencadenar el procedimiento almacenado xp_cmdshell , es decir la aplicacion corre en la misma maquina donde esta instalado Sql Server y no en otra.

si les sirve usen este material, si tienen dudas escriban.

“El conocimiento es como el aire que se respira, es libre y todos lo pueden usar”

diciembre 3, 2008 - Posted by | Base de Datos

9 comentarios »

  1. Contacata conmigo cuando puedas

    Comentario por JuanB Luengo | febrero 3, 2009

  2. Informacion muy util y concreta me sirvio mucho.

    Comentario por Jesus Gutierrez | febrero 24, 2010

  3. A gracias por cierto

    Comentario por Jesus Gutierrez | febrero 24, 2010

  4. Hice la prueba de ese codigo, pero solo me dice ejecutando query y ahi se queda y nunca termina, y tampoco se muestra la ventana del Calc. Que puede ser???

    Comentario por David Alvarez | octubre 28, 2010

  5. Probablemente si se ha ejecutado, buscalo en el administrador de tareas, si lo ves alli, entonces se ha ejecutado
    saludos

    Comentario por Anónimo | noviembre 1, 2010

  6. Hola soy nuevo en el tema y quiero saber como hago. voy a inicio, ejecutar y ahi que pongo para ver la pantalla del dos y poder practicar algunos comandos y cargar un prog. en sql…
    me la podes mandar a mi idreccion: rubenmendo@hotmail.com
    muchas gracias

    Comentario por Anónimo | julio 13, 2011

  7. Buenas tardes, estoy realizando lo mismo que tu has hecho y por algún motivo no he tenido éxito,
    Tengo una aplicación desktop que crea excel dinamicos y los almaceno en una carpeta, cuando ejecuto el .exe con el mouse me crea los archivos de forma correcta, pero cuando lo ejecuto con:

    EXEC xp_cmdshell ‘D:\Rol\JV.Win.exe’ que esta en el servidor de la base de datos, empieza a realizar las tareas veo en el administrador de aplicaciones y veo las tarejas de EXCEL y JV.win.exe ejecutandose pero nunca veo los archivos de excel crearse, al parecer cuando lo ejecuto desde SQL no encuentra la ruta donde se deberá guardar tu sabes porque podría ser?

    Comentario por luis bautista medina | febrero 5, 2013

  8. Ami me hace algo similar. Ejecuto un archivo .exe que realiza un proceso el cual al ejecutarlo desde SQL con el xp_cmdshell no esta fusionando.

    Comentario por Delmirio Segura | marzo 21, 2013

  9. Hola,e stuve revisando tu publicacion, y al momento que ejecuto mi proceso .exe, me sale el siguiente error.
    Error al recuperar un generador de clases COM debido al siguiente error: 80010001
    Help please!

    Comentario por Anónimo | febrero 12, 2014


Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

A %d blogueros les gusta esto: