Ejecutar aplicacion desde servicio (sql server)

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes

  • juanjo_16v
    respondió
    Ok, buena idea. Muchas gracias.

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por juanjo_16v Ver Mensaje
    No hay forma, he modificado el trigger:

    -- trigger 1
    SET@cmd='C:\test\tigger2.exe '+'holaa'
    SET@var='echo '+@cmd

    EXECMaster..xp_cmdshell@cmd
    EXECMaster..xp_cmdshell@var

    -- trigger 2
    SET@cmd='c:\pstools\psexec.exe \\servidorbd -u administrador -p $$$$$ -i 2 cmd /c start notepad.exe'
    SET@var='echo '+@cmd

    EXECMaster..xp_cmdshell@cmd
    EXECMaster..xp_cmdshell@var

    El primero se ejecuta y el segundo se queda frito, es el mismo problema que cuando ejecutaba un programa que solo mostraba una alerta, pero si ejecuto en una consola c:\pstools\psexec.exe \\servidorbd -u administrador -p $$$$$ -i 2 cmd /c start notepad.exe si que se abre el notepad,


    Con la primera, créate un fichero en una localización determinada... y luego una tarea programa que entre cada minuto (por ejemplo) y que si existe ese fichero lo borre y haga lo que quieras de mensajería, etc....

    Dejar un comentario:


  • juanjo_16v
    respondió
    No hay forma, he modificado el trigger:

    -- trigger 1
    SET@cmd='C:\test\tigger2.exe '+'holaa'
    SET@var='echo '+@cmd

    EXECMaster..xp_cmdshell@cmd
    EXECMaster..xp_cmdshell@var

    -- trigger 2
    SET@cmd='c:\pstools\psexec.exe \\servidorbd -u administrador -p $$$$$ -i 2 cmd /c start notepad.exe'
    SET@var='echo '+@cmd

    EXECMaster..xp_cmdshell@cmd
    EXECMaster..xp_cmdshell@var

    El primero se ejecuta y el segundo se queda frito, es el mismo problema que cuando ejecutaba un programa que solo mostraba una alerta, pero si ejecuto en una consola c:\pstools\psexec.exe \\servidorbd -u administrador -p $$$$$ -i 2 cmd /c start notepad.exe si que se abre el notepad,



    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por juanjo_16v Ver Mensaje
    Pues desde consola funciona e incluso si pongo la línea de Psexec... en el tigger directamente no funciona.

    Pondre los avisos por email, pero necesitaba que fuera mas "inmediato".

    Gracias de todas las formas
    Y ¿si desde el tigger grabas un evento nuevo... y asociado a ese evento una acción que es disparar ese procedimiento?

    Dejar un comentario:


  • juanjo_16v
    respondió
    Pues desde consola funciona e incluso si pongo la línea de Psexec... en el tigger directamente no funciona.

    Pondre los avisos por email, pero necesitaba que fuera mas "inmediato".

    Gracias de todas las formas

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por juanjo_16v Ver Mensaje
    Si, si eso lo se, pero es que no funciona poniendo la sesión correcta
    No tiene sentido...

    Dejar un comentario:


  • juanjo_16v
    respondió
    Si, si eso lo se, pero es que no funciona poniendo la sesión correcta

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por juanjo_16v Ver Mensaje
    Si pero la sesión se supone que es la misma mientras no te desconectes y mientras se conecten otros usuarios?
    vamos que con la sesión 2 funciona bien si ejecuto la aplicación desde fuera del sql server, pero desde el trigger no va
    Pero la próxima vez que hagas logon (sobre todo si es W10 o Windows 2016) puede ser cualquier sesión. Dispara un cmd desde el trigger con todo ese contenido...que tiene que ir.

    Dejar un comentario:


  • juanjo_16v
    respondió
    Si pero la sesión se supone que es la misma mientras no te desconectes y mientras se conecten otros usuarios?
    vamos que con la sesión 2 funciona bien si ejecuto la aplicación desde fuera del sql server, pero desde el trigger no va

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por juanjo_16v Ver Mensaje
    Lo de la sesión estaba bien, es la que yo estaba poniendo, la 2
    cada vez es una...

    Dejar un comentario:


  • juanjo_16v
    respondió
    Lo de la sesión estaba bien, es la que yo estaba poniendo, la 2

    Dejar un comentario:


  • jmtella
    respondió
    Para saber la sesión, en el server KA del usuario Administrator, te puede servir esto:

    Código:
    for /f "usebackq skip=1 tokens=1,3 delims=> " %m in (`quser /SERVER:ka`) do @if /i %m EQU Administrator echo %n
    en un cmd, cambia el % por dos %%
    Y en vez del echo %n, lleva esa variable a una de entorno...

    ¿ y por qué no la metes en un cmd simplemente?

    Dejar un comentario:


  • juanjo_16v
    respondió
    El comando es qwinsta

    Si abro una consola y escribo:
    C:\PSTools>PsExec.exe \\servidorbd -u administrador -p $$$$$ -i 2 cmd /c start notepad.exe
    funciona correctamente (aunque solo tengo un usuario en el equipo y me conecto con el escritorio remoto)

    Ahora cojo esa línea y la meto en una aplicación de consola tal cual esta:

    string ruta = "c:\\pstools\\psexec.exe";
    System.Diagnostics.ProcessStartInfo startInfo = new System.Diagnostics.ProcessStartInfo(ruta);
    try
    {
    startInfo.Arguments = "\\\\servidorbd -u administrador -p $$$$ -i 2 cmd /c start notepad.exe";
    Process p = newProcess();
    p.StartInfo = startInfo;
    p.Start();
    }
    catch
    {
    log("error al ejecutar trigger");
    }


    Pues esta aplicación de consola si la ejecuto desde una consola o haciendo doble click funciona, pero si inserto un registro en la tabla donde estoy haciendo las pruebas no sale nada de nada

    Dejar un comentario:


  • jmtella
    respondió
    Originalmente publicado por RSola Ver Mensaje
    ¿Quizá Quser o Qwinsta?
    Efectivamente...con cualquiera de ellos...capturar la sesión, y con un for lo puede sacar en un script y con ello lanzar el psexec...

    (el Alzheimer...)

    Dejar un comentario:


  • RSola
    respondió
    ¿Quizá Quser o Qwinsta?

    Dejar un comentario:

Trabajando...
X