locked
ejecutar aplicacion con un trigger RRS feed

  • Pregunta

  • Muy buenas tardes:

    Tengo el siguiente trigger.

    ALTER TRIGGER [AbreAplicacion] ON [dbo].[Reserva]
       AFTER INSERT
    AS

    BEGIN
       
        SET NOCOUNT ON;


        Exec xp_cmdshell 'D:\APLICACION.exe'

    END

    Al insertar un nuevo registro en la tabla Reservas, se queda como bloqueada y al cabo de un rato aparece un mensaje que dice:

    no se ha actualizado ninguna fila

    Origen del error:  .Net .SqlClient Data Provider.

    Mensaje del error: Valor de tiempo  de espera caducado. El periódo de tiempo de espera caducó antes de completar la operacion o el servidor no responde.

    Abrí el administrador de tareas, y en los procesos estaba la aplicacion y se estaba ejecutando como SYSTEM en vez de como Administrador.y por supuesto el ejecutable no se mostro en el escritorio

    Alguien me podria ayudar?

    Muchas gracias

     

    miércoles, 27 de abril de 2011 11:53

Respuestas

  • Que se pidan cosas no significa que se tengan que hacer de una determinada manera. Como técnicos tenemos que ser capaces de decidir qué opción es la mejor (o la menos mala), y aunque quien lo mande sea nuestro jefe siempre se pueden discutir las cosas si se exponen los argumentos adecuados.

    SQL Server es un motor de base de datos y aunque sea capaz de hacer más cosas que simplemente consultas y almacenar datos, no signfica que sea el mejor instrumento para ciertas operaciones.

    Lo que pides (crear un pdf y enviarlo por mail) se puede hacer en SQL Server, sí, pero las implicaciones a nivel de seguridad, rendimiento y administración son tantas que me parece un sinsentido siquiera plantearlo. Una aplicación, aunque sea web, va a poder realizar ese proceso de forma mucho más eficiente y sin tantas implicaciones que hacerlo a través de un trigger.

    Desde mi punto de vista, un foro no sólo está para responder a preguntas que se plantean. También está para advertir, en base a la experiencia y opinión de cada uno, soluciones que pueden estar mal enfocadas y sugerir nuevas vías. Por eso insisto tanto en este tema: lo que pides no es la mejor forma de hacerlo, lo suyo es codificarlo en la aplicación cliente.
    miércoles, 27 de abril de 2011 14:28
  • EXEC msdb.dbo.sp_start_job N'ejecutaraplicacion' ;

    Ejecutá la aplicación dentro de un job (trabajo). En el job corre con la cuenta del servicio del agente y si no, puedes crear credenciales con un usuario que realmente tenga permisos sobre la aplicación.

     

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    miércoles, 27 de abril de 2011 13:40

Todas las respuestas

  • Ejecutar una aplicación que requiere la interacción de un usuario dentro de un trigger no me parece, ni de lejos, una buena práctica.

    ¿Por qué quieres hacer eso? ¿No crees que es más lógico que la ejecución de esa aplicación lo haga la aplicación que realiza el INSERT en esa tabla?

    miércoles, 27 de abril de 2011 12:20
  • EXEC msdb.dbo.sp_start_job N'ejecutaraplicacion' ;

    Ejecutá la aplicación dentro de un job (trabajo). En el job corre con la cuenta del servicio del agente y si no, puedes crear credenciales con un usuario que realmente tenga permisos sobre la aplicación.

     

     


    MVP MCT MCTS Daniel Calbimonte

    http://elpaladintecnologico.blogspot.com
    miércoles, 27 de abril de 2011 13:40
  • quiero que se ejecute el programa por cada inserccion porque lo que hace la aplicacion es crear un pdf y enviar por email, y tienes razón en lo que dices, pero son cosas que me piden y yo soy una mandada. Y las insercciones se hacen a través de una web
    miércoles, 27 de abril de 2011 14:08
  • Que se pidan cosas no significa que se tengan que hacer de una determinada manera. Como técnicos tenemos que ser capaces de decidir qué opción es la mejor (o la menos mala), y aunque quien lo mande sea nuestro jefe siempre se pueden discutir las cosas si se exponen los argumentos adecuados.

    SQL Server es un motor de base de datos y aunque sea capaz de hacer más cosas que simplemente consultas y almacenar datos, no signfica que sea el mejor instrumento para ciertas operaciones.

    Lo que pides (crear un pdf y enviarlo por mail) se puede hacer en SQL Server, sí, pero las implicaciones a nivel de seguridad, rendimiento y administración son tantas que me parece un sinsentido siquiera plantearlo. Una aplicación, aunque sea web, va a poder realizar ese proceso de forma mucho más eficiente y sin tantas implicaciones que hacerlo a través de un trigger.

    Desde mi punto de vista, un foro no sólo está para responder a preguntas que se plantean. También está para advertir, en base a la experiencia y opinión de cada uno, soluciones que pueden estar mal enfocadas y sugerir nuevas vías. Por eso insisto tanto en este tema: lo que pides no es la mejor forma de hacerlo, lo suyo es codificarlo en la aplicación cliente.
    miércoles, 27 de abril de 2011 14:28