8

Tengo un procedimiento almacenado que devuelve aproximadamente 50000 registros en 10 segundos utilizando como máximo 2 núcleos en SSMS. El informe de SSRS utilizando el procedimiento almacenado tardaba 20 minutos y maximizaba el procesador en un servidor de 8 núcleos durante todo el tiempo. El informe fue relativamente simple (es decir, sin gráficos, cálculos). El informe no parecía ser el problema, ya que escribí las filas 50K en una tabla temporal y el informe podría mostrar los datos en unos segundos. Probé muchas ideas diferentes para probar la alteración del procedimiento almacenado cada vez, pero manteniendo el código original en una ventana separada para volver a. Después de una modificación del procedimiento almacenado, volviendo al código original, el informe y la utilización del servidor comenzaron a ejecutarse rápidamente, de manera comparable al rendimiento del procedimiento almacenado solo. Todo está bien por ahora, pero me gustaría llegar al fondo de lo que causó esto en caso de que vuelva a suceder. ¿Algunas ideas?Misterio de rendimiento SSRS

+0

índices de las tablas? Un plan de ejecución obsoleto? Las estadísticas se actualizaron? ¿Tenías un registro de SqlProfiler? Eso ayudará en el futuro ... – rene

+0

¿Simplemente renderizado o renderizado como PDF? – SQLMason

+0

Dan: simplemente presenta un informe estándar en la web. René - No ejecuté SqlProfiler durante la solución de problemas. Lo he ejecutado en consultas locales, pero ¿hay algo especial que deba hacer para registrar las llamadas al SSRS DB? Tampoco profundicé en los registros de ejecución de SSRS, pero estaba considerando si la otra solución de problemas no había funcionado. ¿Cómo se puede detectar un plan de ejecución obsoleto? – user101654

Respuesta

0

Comenzaría con una traza del Analizador de SQL tanto del procedimiento almacenado cuando lo ejecuta normalmente, y luego el mismo SP cuando es llamado por SSRS. Asegúrese de incluir los planes de ejecución involucrados, para que pueda ver si está tomando malas decisiones (aunque parece poco probable: el SQL Server debe ejecutar un plan óptimo, o al menos coherente, independientemente de la fuente de la consulta).

Solíamos tener casos en los que Business Objects ejecutaba los procesos almacenados docenas de veces sin ningún motivo aparente y esto ocasionaba ocasionalmente un rendimiento horrible, aunque nunca he visto el mismo comportamiento con SSRS. Sin embargo, puede ser un lugar para comenzar. También verá los tiempos de inicio/finalización de la ejecución, esto dejará en claro si la capa de la base de datos está colgando, o si el Servidor SQL devuelve los datos en 10 segundos y luego el servicio SSRS se está ahogando en alguna parte.

0

La principal solución para acelerar los informes de SSRS es caché los informes. Si uno hace esto (ya sea precargando el caché a las 7:30 a.m., por ejemplo) o almacena en caché los informes con éxito, uno obtendrá grandes ganancias en velocidad de carga.

También puede encontrar reinicios mensuales del dominio de la aplicación SSRS para resolver su problema.

Tenga en cuenta que hago esto todos los días y profesionalmente y no soy simplemente la depilación con cera poética sobre SSRS

almacenamiento en caché en SSRS http://msdn.microsoft.com/en-us/library/ms155927.aspx

pre-cargar el caché http://msdn.microsoft.com/en-us/library/ms155876.aspx

Si lo hace no como los informes iniciales que toman mucho tiempo y sus datos son estáticos, es decir, un diario general diario o similar, lo que significa que los datos son relativamente estáticos durante el día, usted m ay aumente la vida útil de caché.

Finalmente, también puede optar por los gerentes de empresas a cambio reciben estos informes a través de suscripciones de correo electrónico, que les enviará un punto en el tiempo informe de Excel que pueden encontrar más fácil y más sistemático.

También puede usar parámetros en SSRS para facilitar el análisis por parte del usuario y consultas más rápidas. En el generador de consultas escriba IN (@SSN) debajo de la columna Filtro que desea parametrizar, luego lo encontrará creado en la carpeta de parámetros justo arriba de las fuentes de datos en la esquina superior izquierda de su GUÍA BIDS. [Si no ve la sección de fuente de datos en SSRS, presione CTRL + ALT + D.

Ver una pregunta casi idéntica aquí: Performance Issuses with SSRS