none
Ejecutar consulta de subreport en background RRS feed

  • Pregunta

  • Buenos días, estoy realizando un report en Reporting services;

    Cuando se ejecuta el report al hacer click en un concepto situado en  una tabla, empieza a correr la ejecución de un subreport que muestra el detalle de este concepto.

    El problema que tengo es que utilizo gran cantidad de datos, por lo que la ejecución de este subreport tarda mucho.

    Quisiera saber si es posible, que al ejecutar el report principal se ejecutara en segundo plano el procedimiento almacenado que calcula el subreport, que necesita los mismos parametros que el report principal y así almacenar el resultado en una tabla, con lo cual, la ejecución del subreport detalle simplemente sería select * from tabla y ya está.

    Quiero que se ejecute en segundo plano, porque si el report principal tiene que esperar a que la ejecución del Procedimiento almacenado que calcula el detalle termine, estamos en las mismas.

    Alguien sabe decirme si esto o algo parecido es posible, he estado buscando soluciones, pero no las he encontrado.

    Gracias por la atención. Saludos,

    viernes, 21 de septiembre de 2012 8:48

Todas las respuestas

  • ¿Has probado a habilitar en el propio Reporting Services el cacheo del report en cuestión? Con esa opción habilitada, se debería guardar copia de los datos la primera vez que pides el informe, y luego al llamarlo aparecería instantáneamente (a partir de los datos cacheados, no de los actuales). Si quieres que eso ocurra automáticamente a cierta hora, en lugar de la primera vez que se pida el informe, puedes usar los Snapshots y automatizarlos para que se lancen con la periodicidad que quieras (y esto lo hace en background como querías). Y si el informe se ejecuta cada vez con distintos parámetros, lo que puedes hacer es no filtrar en la consulta, sino poner el filtro dentro del informe. De esta forma, el caché o el snapshot guarda todos los datos, y sólo se filtran los registros necesarios al emitir el informe. Esto desde luego habrá que evaluarlo, ya que dependiendo del volumen de datos y de los filtros aplicados puede ser o no ser ventajoso respecto a ejecutar el procedimiento cada vez que se pide el informe.
    sábado, 22 de septiembre de 2012 8:23
    Moderador
  • Buenos días,

    Lo que me has comentado no solucionaría la cuestión que yo planteo, creo que no me has entendido.

    La ejecución del subreport depende de ciertos parametros que son los mismos que los del report principal, pero los procedimientos almacenados que se ejecutan son diferentes, en cuestión la ejecución del SP del subreport es el que tarda mucho, por lo que mi consulta era si al ejecutar el report principal sería posible que se ejecutara en segundo plano el SP del subreport y el resultado lo guardaría en una tabla y en segundo plano para que el report principal no tuviera que esperarse a la ejecución de este SP costoso, por que si no estaríamos en las mismas.

    El informe se ejecuta cada vez con distintos parametros, pero si no filtro la cantidad de registros que se generarían harían que la ejecución tardara horas.

    De todas formas muchas gracias por tu respuesta, seguro que me es práctica para otros temas que me surjan.

    Saludos,

    lunes, 24 de septiembre de 2012 7:25