Tengo un informe SSRS que llama a un procedimiento almacenado. Si ejecuto el procedimiento almacenado directamente desde una ventana de consulta, volverá en menos de 2 segundos. Sin embargo, la misma consulta ejecutada desde un informe SSRS de 2005 tarda hasta 5 minutos en completarse. Esto no solo sucede en la primera ejecución, sucede todo el tiempo. Además, no veo este mismo problema en otros entornos.
¿Alguna idea sobre por qué el informe SSRS funcionaría tan lento en este entorno en particular?
Respuestas:
Gracias por las sugerencias proporcionadas aquí. Hemos encontrado una solución y resultó estar relacionada con los parámetros. SQL Server estaba produciendo un plan de ejecución complicado cuando se ejecutó desde el informe SSRS debido a la 'detección de parámetros'. La solución alternativa fue declarar variables dentro del procedimiento almacenado y asignar los parámetros entrantes a las variables. Luego, la consulta utilizó las variables en lugar de los parámetros. Esto provocó que la consulta se realizara de forma coherente si se llamaba desde SQL Server Manager o mediante el informe SSRS.
fuente
Agregue esto al final de su proceso:
option(recompile)
Esto hará que el informe se ejecute casi tan rápido como el procedimiento almacenado.
fuente
Agregaré que tuve el mismo problema con una consulta de procedimiento no almacenado, solo una declaración de selección simple. Para solucionarlo, declaré una variable dentro de la declaración SQL del conjunto de datos y la establecí igual al parámetro SSRS.
¡Qué solución tan molesta! Aún así, ¡gracias a todos por acercarme a la respuesta!
fuente
Tuve el mismo problema, aquí está mi descripción del problema
"Creé un procedimiento de tienda que generaría 2200 filas y se ejecutaría en casi 2 segundos; sin embargo, después de llamar al procedimiento de tienda desde SSRS 2008 y ejecutar el informe, en realidad nunca se ejecutó y finalmente tengo que eliminar el BIDS (Business Intelligence Development Studio) desde el administrador de tareas ".
Lo que intenté: Intenté ejecutar el SP desde el inicio de sesión de reportuser, pero el SP también funcionaba normalmente para ese usuario, verifiqué Profiler pero nada funcionó.
Solución:
En realidad, el problema es que, aunque SP está generando el resultado, el motor SSRS se está demorando en leer estas muchas filas y devolverlas. Así que agregué la opción WITH RECOMPILE en SP y ejecuté el informe ... aquí es cuando sucedió el milagro y mi problema se resolvió.
fuente
Tuve el mismo escenario ... Informe muy básico, el SP (que solo toma 1 parámetro) tardaba 5 segundos en recuperar registros de 10K, pero el informe demoraría 6 minutos en ejecutarse. Según el generador de perfiles y la tabla RS ExecutionLogStorage, el informe dedicaba todo su tiempo a la consulta. El comentario de Brian S. me llevó a la solución ... Simplemente agregué WITH RECOMPILE antes de la declaración AS en el SP, y ahora el tiempo del informe coincide prácticamente con el tiempo de ejecución del SP.
fuente
Simplemente deseleccioné 'Repetir columnas de encabezado en cada página' dentro de las Propiedades de Tablix.
fuente
Si su procedimiento almacenado usa servidores vinculados o openquery , es posible que se ejecuten rápidamente por sí mismos, pero demorarán mucho en procesarse en SSRS. Algunas sugerencias generales:
Veo que la pregunta ha sido respondida, solo agrego esto en caso de que alguien tenga el mismo problema.
fuente
Tuve el informe de problemas de salida html en el informe que recuperaba 32000 líneas. La consulta se ejecutó rápidamente, pero la salida al navegador web fue muy lenta. En mi caso, tuve que activar “Paginación interactiva” para permitir que el usuario vea la primera página y pueda generar un archivo de Excel. Las ventajas de esta solución es que la primera página aparece rápidamente y el usuario puede generar una exportación a Excel o PDF, la desventaja es que el usuario solo puede desplazarse por la página actual. Si el usuario desea ver más contenido, debe usar los botones de navegación sobre la cuadrícula. En mi caso, el usuario aceptó este comportamiento porque la exportación a Excel era más importante.
Para activar la "Paginación interactiva" debe hacer clic en el área libre en el panel del informe y cambiar la propiedad "InteractiveSize" \ "Altura" en el nivel del informe en el panel Propiedades. Establezca esta propiedad en un valor diferente de 0. En mi caso, la establecí en 8.5 pulgadas. También asegúrese de haber desmarcado la propiedad "Mantener juntos en una página si es posible" en el nivel de Tablix (haga clic derecho en Tablix, luego en "Propiedades de Tablix", luego en "General" \ "Opciones de salto de página").
fuente
Me encontré con un problema similar de mi procedimiento almacenado que se ejecuta rápidamente desde Management Studio pero se ejecuta muy lento desde SSRS. Después de una larga lucha, resolví este problema eliminando el procedimiento almacenado físicamente y recreándolo. No estoy seguro de la lógica detrás de esto, pero supongo que se debe al cambio en la estructura de la tabla utilizada en el procedimiento almacenado.
fuente
Enfrenté el mismo problema. Para mí fue solo para desbloquear la opción:
Del informe SSRS. Intentaba poner todos los registros en la misma página en lugar de crear muchas páginas.
fuente
Aparte del problema del rastreo de parámetros, descubrí que SSRS es generalmente más lento en el procesamiento del lado del cliente que (en mi caso) los informes de Crystal. El motor SSRS simplemente no parece tan capaz cuando tiene muchas filas para filtrar o agregar localmente. Por supuesto, estos son problemas de diseño de conjuntos de resultados que con frecuencia se pueden abordar (aunque no siempre si los detalles son necesarios para el desglose) pero el motor de informes más um ... maduro ... es más indulgente.
fuente
En mi caso, solo tuve que desconectar y conectar el SSMS. Hice un perfil de la consulta y la duración de la ejecución mostraba 1 minuto aunque la consulta en sí se ejecuta en menos de 2 segundos. Reinició la conexión y se ejecutó nuevamente, esta vez la duración mostró el tiempo de ejecución correcto.
fuente
Un par de cosas que puede hacer sin ejecutar el informe real, simplemente ejecute el sproc desde la pestaña de datos de los servicios de informes. ¿Todavía lleva tiempo? Otra opción es utilizar SQL Profiler y determinar qué entra y sale del sistema de base de datos.
Otra cosa que puede hacer para probarlo es volver a crear un informe simple sin ningún parámetro. Ejecute el informe y vea si marca la diferencia. Puede ser que su informe de RS esté dañado o mal formado, lo que puede hacer que el procesamiento sea muy lento.
fuente
Tuve el mismo problema y lo solucionó dando al conjunto de datos compartido un parámetro predeterminado y actualizando ese conjunto de datos en el servidor de informes.
fuente
¿Utiliza "agrupar por" en la tabla SSRS?
Tenía un informe con 3 agrupados por campos y noté que el informe se ejecutaba muy lentamente a pesar de tener una consulta ligera, hasta el punto en que ni siquiera puedo marcar valores en el campo de búsqueda.
Luego eliminé las agrupaciones y ahora el informe sube en segundos y todo funciona en un instante.
fuente
Pude resolver esto eliminando el campo incorporado [& TotalPages] de la parte inferior. El tiempo que pasó de minutos a menos de un segundo.
Algo extraño que no pude determinar estaba teniendo impacto en el cálculo del total de páginas.
Estaba usando SSRS 2012.
fuente
En nuestro caso, no se requirió ningún código.
Nota de nuestra mesa de ayuda: "Borrar la configuración de Internet solucionará este problema".
Quizás eso signifique "borrar caché".
fuente