Saltar al contenido principal

 none
Alto tiempo de ejecución sqlserver en aplicación vb.net RRS feed

  • Pregunta

  • Buenas,

    Tengo una base de datos en sqlserver 2014 con procedimientos almacenados bastante complejos. Uno de ellos en especial demora de 5 a 25 minutos en el Management Studio.

    En principio no pude ejecutar este procedimiento almacenado desde la aplicación, por lo que tuve que aumentar el tiempo de "Timeout error" en la aplicación. Funciona bastante bien, pero demora bastante tiempo y la aplicación se congela. Mientras el procedimiento almacenado está en ejecución, la aplicación queda congelada y el windows aveces lanza el error de que la "Aplicación No Responde", pero esto no es así, en realidad es el servidor que demora bastante en hacer los cálculos con el procedimiento almacenado.

    Mi pregunta: ¿Existe alguna manera de dejar como en "segundo plano" la ejecución del Procedimiento Almacenado? o por ejemplo, que en la aplicación una barra de estado, o un reloj, pueda ir vigilando el avance de las iteraciones que está realizando el procedimiento almacenado en el servidor?

    Muchas gracias,

    lunes, 18 de noviembre de 2019 19:09

Todas las respuestas

  • Saludos, 

    Porque no creas indixes a las tablas que que consumen tu store procedure, entiendo que mejorara tu performace.


    Si mi respuesta te ha ayudado a resolver tus problemas, Selecciona "Proponer como respuesta"

    Blog
    J.Joaquin

    lunes, 18 de noviembre de 2019 20:52
  • hola

    >>procedimientos almacenados bastante complejos. Uno de ellos en especial demora de 5 a 25 minutos en el Management Studio.

    no analizaste el Plan de Ejecucion que porporciona el sql server para ver donde se produce la demora

    por lo general si agregas algun Indice correcto por algun campo se mejora mucho la performance

    recuerda ademas la db requiere mantenimiento y ejecutar jobs de re-indexacion, deberias validar que los joins los realizas por los campos key de las tablas y que estos sean numericos y no cadena 

    >>¿Existe alguna manera de dejar como en "segundo plano" la ejecución del Procedimiento Almacenado?

    puedes usar thread, lanzando la consulta en un hilo separado al de la UI no la bloqueas y permites que se siga trabajando con esta

    Despues cuando termina volveria la respuesta la procesas he informas que ya estan los datos para su visualizacion

    podes ayudarte con este componente

    Información general sobre el componente BackgroundWorker

    para que sea mas simple implementarlo

    >>pueda ir vigilando el avance de las iteraciones que está realizando el procedimiento almacenado en el servidor?

    no creo que puedas visualizar un avance real, la db no te proporciona esta informacion

    si podrias mostrar algun indicador de trabajo como ser usar el progressbar con la opcion de marquee, pero no sera un avance real sino solo indicar que se esta trabajando

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    martes, 19 de noviembre de 2019 22:08