Ejecutar aplicacion desde servicio (sql server)

Colapsar
X
 
  • Filtrar
  • Tiempo
  • Mostrar
Limpiar Todo
nuevos mensajes
  • RSola
    Senior Member
    • Jan
    • 288

    #16
    ¿Quizá Quser o Qwinsta?
    Ramón Sola

    Comentario

    • jmtella
      Administrator
      • Nov
      • 21085

      #17
      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...)

      Comentario

      • juanjo_16v
        Senior Member
        • Jan
        • 1254

        #18
        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

        Comentario

        • jmtella
          Administrator
          • Nov
          • 21085

          #19
          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?

          Comentario

          • juanjo_16v
            Senior Member
            • Jan
            • 1254

            #20
            Lo de la sesión estaba bien, es la que yo estaba poniendo, la 2

            Comentario

            • jmtella
              Administrator
              • Nov
              • 21085

              #21
              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...

              Comentario

              • juanjo_16v
                Senior Member
                • Jan
                • 1254

                #22
                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

                Comentario

                • jmtella
                  Administrator
                  • Nov
                  • 21085

                  #23
                  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.

                  Comentario

                  • juanjo_16v
                    Senior Member
                    • Jan
                    • 1254

                    #24
                    Si, si eso lo se, pero es que no funciona poniendo la sesión correcta

                    Comentario

                    • jmtella
                      Administrator
                      • Nov
                      • 21085

                      #25
                      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...

                      Comentario

                      • juanjo_16v
                        Senior Member
                        • Jan
                        • 1254

                        #26
                        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

                        Comentario

                        • jmtella
                          Administrator
                          • Nov
                          • 21085

                          #27
                          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?

                          Comentario

                          • juanjo_16v
                            Senior Member
                            • Jan
                            • 1254

                            #28
                            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,



                            Comentario

                            • jmtella
                              Administrator
                              • Nov
                              • 21085

                              #29
                              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....

                              Comentario

                              • juanjo_16v
                                Senior Member
                                • Jan
                                • 1254

                                #30
                                Ok, buena idea. Muchas gracias.

                                Comentario

                                Trabajando...
                                X