Solucionar problemas de informes: rendimiento del informe

Al ver un informe, podría transcurrir mucho tiempo hasta que aparece la primera página. Para ayudar a determinar en qué se emplea el tiempo de procesamiento del informe, vea Técnicas de solución de problemas de informes. Después de determinar si el tiempo de retardo se dedica a la recuperación de datos, al procesamiento del informe o a la representación del mismo, use este tema como ayuda para solucionar el problema.

Los datos tardan demasiado tiempo en recuperarse

El informe tarda demasiado tiempo en procesarse

El informe tarda demasiado tiempo en representarse

Sugerencias de diseño para optimizar el procesamiento del informe

Los datos tardan demasiado tiempo en recuperarse

Cuantos más datos tenga el informe, más recursos usa, más tráfico de red provoca y más tiempo de proceso y más almacenamiento necesita. Analice los problemas que se observan en el informe para determinar cuántos datos necesita y, a continuación, recupere solamente los datos de los orígenes de datos del informe.

Se recuperan más datos para un informe de los que se necesitan

Las operaciones de filtro, ordenación y agregación son más eficaces en el origen de datos que durante el procesamiento del informe. Escriba las consultas para que solo devuelvan el nivel de detalle que se muestre en el informe. La lista siguiente sugiere ideas para evaluar cada consulta de informe en el informe:

  • Escriba consultas con cláusulas WHERE o HAVING que limiten los datos solo a lo que el usuario debe ver en el informe. Use parámetros de consulta para restringir los datos que se recuperan en tiempo de ejecución. Los parámetros de la consulta se enlazan automáticamente a los parámetros de informe correspondientes y permiten que el usuario decida qué datos le interesan. Para obtener más información, vea Filtrar filas mediante WHERE y HAVING.

    Al crear un informe de instantáneas que tenga parámetros de informe que filtren datos, todos los posibles datos que se podrían mostrar en el informe deben guardarse en la instantánea. En este caso, no use parámetros en las consultas del conjunto de datos. En su lugar, cree manualmente los parámetros de informe que pueda usar en expresiones de filtro para permitir que el usuario especifique los datos que desea.

  • Escriba consultas con la cláusula ORDER BY para ordenar los datos que se recuperan para un informe. Ordene los datos como desee que estén ordenados en el informe. Si los datos se ordenan de antemano, se mejora el tiempo de procesamiento del informe debido a la manera en que se almacena en la memoria. Muchas tareas de procesamiento de informes no requieren que los datos estén ordenados antes de procesarlos. Por ejemplo, SUMA no depende del orden. Los datos dentro de instancias de grupo no se ordenan automáticamente. Si no necesita que la información esté ordenada en el informe, no establezca expresiones de ordenación en el conjunto de datos o en la región de datos. Para obtener más información, vea ORDER BY (cláusula de Transact-SQL) y Ordenar datos en una región de datos (Generador de informes 3.0 y SSRS).

    Ordenar grupos o por valores agregados es mucho más fácil en el informe que en la consulta, y suele ser también más eficaz.

  • Escriba consultas con GROUP BY para agregar valores en el origen de datos.

    Muchas veces, la manera más efectiva de comunicar la información es agregar valores y mostrar resúmenes. Puede calcular un nivel de agregados en el origen de datos y recuperarlos para un conjunto de datos. Los datos "detallados" del conjunto de datos ahora representan los agregados calculados en el origen de datos. Para obtener más información, vea Resumir los resultados de una consulta (Visual Database Tools).

    Una vez que estos valores previamente agregados se incluyan en el informe, podrá continuar agregando los valores siempre y cuando use una función que sea transitiva desde el punto de vista matemático, como SUM. Por ejemplo, supongamos que dispone de un conjunto de 6 valores: 1, 2, 3, 4, 5, 6. Si agrupa los valores en parejas, tendrá un conjunto de 3 valores: 3, 7, 11. Puede calcular la suma en el primer conjunto (21) y en el segundo conjunto (21), y las sumas serán iguales independientemente de la agrupación. Si calcula la media de los valores de los conjuntos utilizando la función AVG, obtendrá un resultado diferente para cada conjunto. La media para el conjunto de 6 es de 21/6 ó de 3,5. La media del conjunto de 3 es de 21/3 ó de 7. AVG no es una función transitiva.

  • Considere la cantidad de datos necesaria para un gráfico o medidor. Al dibujar centenares de puntos de unos píxeles en un monitor se degrada el rendimiento y no mejora la exposición visual de los gráficos. Dibujar más de 7 u 8 sectores en un gráfico circular tiene un valor cuestionable. Para obtener más información, vea la correspondiente a tipos de gráficos concretos enumerada en Tipos de gráficos (Generador de informes 3.0 y SSRS).

  • Para los elementos de informe con visibilidad condicional, el procesador de informes debe aplicar las expresiones de agrupación, ordenación y filtrado aunque solamente esté visible al principio el nivel superior de los datos. Aunque el procesamiento a petición en SQL Server 2008 Reporting Services optimiza la evaluación de los datos procesando solo los datos que están visibles, todos los datos posibles forman parte del informe. Si el usuario solamente está interesado en ver datos detallados durante un tiempo, un informe detallado es una opción mejor. Para obtener más información, vea Tipos de informes.

  • Considere crear instantáneas de ejecución para un informe. Una instantánea de informe incluye todos los datos del informe recuperados para los conjuntos de datos de la definición de informe. Para obtener más información, vea Crear, modificar y eliminar instantáneas del historial del informe.

Tiempo de espera de la consulta

Los valores de tiempo de espera de la consulta se especifican durante la creación del informe, al definir un conjunto de datos. El valor de tiempo de espera se almacena junto con el informe, en el elemento Tiempo de espera de la consulta. De forma predeterminada, este valor está establecido en 30 segundos. Para obtener más información, vea Establecer valores de tiempo de espera para el procesamiento de informes y conjuntos de datos compartidos (SSRS).

Para establecer el valor de tiempo de espera para una consulta del conjunto de datos, vea Crear un conjunto de datos compartido o un conjunto de datos incrustado (Generador de informes 3.0 y SSRS).

Cantidades grandes de tráfico de red ocasionan tiempos de espera para el usuario

Las cantidades grandes de datos que se pasan como tráfico de red pueden introducir tiempos de espera para el usuario. Según la cantidad de usuarios y el volumen de vistas de informe que se prevea que haya, puede seleccionar el enfoque adecuado para implementar los componentes del servidor de informes. Para obtener más información, vea Planear una topología de implementación.

Por ejemplo, las estrategias siguientes podrían ayudar a reducir los tiempos de espera para el usuario:

  • Mantenga el catálogo del servidor de informes en el mismo equipo que el servidor de informes.

    La base de datos del servidor de informes tempdb administra los datos de informe que se recuperan para cada consulta del conjunto de datos en una definición de informe. Al mantener los datos del informe con el procesador de informes, se reduce el tráfico de red que puede ralentizar la ejecución de los informes.

  • En los orígenes de datos de almacenamiento de datos, mantenga el almacenamiento de datos en un servidor que no sea el servidor de informes.

    Aunque al recuperar los datos a través de la red se agrega trabajo adicional para la ejecución de informes, tener en el mismo servidor tanto el almacenamiento de datos como Reporting Services que compiten por la memoria puede ralentizar el rendimiento.

El informe tarda demasiado tiempo en procesarse

El procesamiento del informe se produce una vez recuperados los datos para los conjuntos de datos de informe, cuando el procesador de informes combina el diseño del informe y los datos para crear un formato de informe provisional que se pasa a continuación al representador de informes. En general, el procesador de informes solamente combina los datos y el diseño para la página actual que ve el usuario. El diseño del informe, la paginación y las expresiones complejas pueden afectar al tiempo de proceso del Informe en las áreas de un informe que tienen muchas instancias.

Use esta sección para ayudar a mejorar el rendimiento de procesamiento de los informes.

Las expresiones del encabezado de página o del pie de página obligan a procesar todas las páginas

Al incluir una referencia al campo integrado [&TotalPages], el procesador de informes debe paginar el informe completo para poder representar la primera página. Si no existe ninguna referencia a [&TotalPages], la primera página se puede representar y devolver al usuario inmediatamente, sin procesar el resto del informe. Además, el procesador del informe supone que cualquier expresión compleja en el encabezado de página o el pie de página podría contener una referencia directa o indirecta a [&TotalPages].

Para evitar que el procesador de informes pagine un informe largo, no incluya una referencia a [&TotalPages] ni a ninguna expresión compleja en el encabezado de página y el pie de página.

No hay ningún salto de página en el informe

Cuando un usuario pagina un informe, el procesador de informes combina los datos y la información de diseño del informe para cada página del informe y pasa la página al representador de informes. Con un informe que no tiene ningún salto de página, el informe entero se debe procesar antes de que el usuario pueda ver la primera página.

Un representador de división de páginas no forzado, como el visor de HTML, administra la paginación automáticamente. Puede invalidar este comportamiento automático y establecer el informe para que sea de una página estableciendo la propiedad de Report InteractiveHeight en 0. En los representadores de división de páginas forzados, debe agregar los saltos de página manualmente. Para obtener más información acerca de los tipos de representadores, vea Describir los comportamientos de representación (Generador de informes 3.0 y SSRS).

Compruebe que InteractiveHeight no es 0 y que está establecido en un tamaño de página razonable, por ejemplo, en 21,76 cm. Agregue los saltos de página a los elementos de informe o grupos Tablix para ayudar a organizar el informe en páginas. De esta forma se reduce la cantidad de datos que se deben procesar para cada página. Para obtener más información, vea Agregar un salto de página (Generador de informes 3.0 y SSRS).

Agrupación de regiones de datos Tablix compleja y funciones de agregado

Muchos niveles de grupos anidados y anexos en una región de datos Tablix pueden afectar al rendimiento del procesamiento de los informes. Considere tanto el nivel de agrupamiento como el número de instancias de grupo, y el uso de funciones de agregado que precisan evaluarse una vez aplicadas las expresiones de agrupación, filtro y ordenación. Por ejemplo, Anterior es una función de agregado 'cara' porque su valor depende de los elementos ordenados de una región de datos; Suma no depende del orden y requiere menos recursos. Otros agregados posteriores a la ordenación son Primero y Último. Para obtener más información, vea Referencia a funciones de agregado (Generador de informes 3.0 y SSRS).

Evalúe el diseño de informe del informe y considere si se puede producir alguna agregación de los datos en el origen de datos. Reducir la cantidad de datos en el informe podría ser suficiente para proporcionar un rendimiento aceptable sin cambiar ninguna llamada a la función de agregado.

Muchas instancias de subinformes en una región de datos Tablix reducen el rendimiento de los informes

Entienda las ventajas y las desventajas del uso de subinformes. Cada instancia de un subinforme supone la ejecución de una consulta independiente y una tarea de procesamiento de informes independiente.

  • Use los subinformes cuando haya solamente unos pocos.

  • No use los subinformes dentro de un grupo cuando haya muchas instancias de grupos. Por ejemplo, para mostrar una lista de las ventas y las devoluciones de cada cliente, considere la opción de usar informes detallados. Considere si puede escribir la consulta para combinar el cliente con las ventas y devoluciones, y agruparlas después por el identificador de cliente.

  • Use subinformes cuando el subinforme use un origen de datos diferente al del informe principal. Si el rendimiento es un problema, considere la posibilidad de cambiar la consulta del conjunto de datos en el informe principal utilizando una de las estrategias de mitigación siguientes:

    • Recopile los datos en un almacenamiento de datos y use este como origen de datos para un único conjunto de datos.

    • Use servidores vinculados de SQL Server y escriba una consulta que recupere los datos de varias bases de datos.

    • Use la capacidad de OPEN ROWSET para especificar bases de datos diferentes.

Procesos que compiten por la misma memoria en el servidor de informes

Si hay varias aplicaciones que compiten por los mismos recursos de memoria en un servidor de informes, pueden afectar al procesamiento de los informes.

Compruebe con el administrador del sistema que la configuración de la administración de memoria sigue el modelo correcto para el uso del servidor de informes. Para obtener más información, vea Configurar la memoria disponible para las aplicaciones del servidor de informes.

El tiempo de espera de la ejecución del informe se agota

Para ejecutar informes grandes, hay dos tiempos de espera que debe ajustar: el de ejecución del informe y el de ASP.NET.

Los valores de tiempo de espera de ejecución de informes se especifican en el servidor de informes. Para obtener más información, vea Establecer valores de tiempo de espera para el procesamiento de informes y conjuntos de datos compartidos (SSRS).

El archivo de configuración del servidor de informes controla la directiva de tiempo de espera de ASP.NET. La ubicación predeterminada de este archivo es <unidad>:\Archivos de programa\Microsoft SQL Server\MSRS10_5.MSSQLSERVER\Reporting Services\ReportServer\web.config. Para establecer el número máximo de segundos que una solicitud puede ejecutarse, agregue el elemento httpRuntime a este archivo:

<configuration>
   . . .
   <system.web.
      . . .
      <httpRuntime executionTimeout="90"/>
      . . .
   </system.web.
   . . .
</configuration>

Dependiendo del tamaño del informe, este valor puede que tenga que representar varias horas.

El informe tarda demasiado tiempo en representarse

La representación del informe se produce después de que los datos y el diseño se combinan en un formato provisional y después se pasan a una extensión de representación. El tiempo de representación puede verse afectado por la cantidad de datos, el número de instancias de elementos de informe y la paginación. Al exportar un informe, pasa el formato provisional a un representador concreto. Si sabe que los usuarios ven un informe en un formato concreto, debe optimizarlo para ese representador. Para obtener más información, vea Exportar informes (Generador de informes 3.0 y SSRS) y Describir los comportamientos de representación (Generador de informes 3.0 y SSRS).

Use esta sección como ayuda para mejorar el rendimiento de representación de un informe.

El informe no se optimiza para el formato de representación elegido

Algunas características no se admiten en todos los representadores. Si el formato principal para ver un informe es un formato de archivo concreto, podría tener que modificar el diseño de informe para optimizar la visualización por parte del usuario.

  • Agregue saltos de página siempre que tenga sentido. Por ejemplo, cada salto de página define una hoja nueva en Excel. Cada hoja puede contener un máximo de 65000 filas. Considere estos límites al establecer los saltos de página en un informe.

  • Para exportar a Excel, no combine las celdas en una región de datos Tablix. En los informes de formato libre, alinee los elementos de informe verticalmente. Las celdas combinadas y los elementos de informe sin alinear interfieren con la funcionalidad de Excel en el informe exportado.

  • Los analizadores HTML no son eficientes al representar páginas HTML muy grandes. Si tiene problemas para representar un informe, seleccione un formato que produzca un archivo más pequeño (por ejemplo, CSV). Si no puede elegir otro formato porque la barra de herramientas de informe no está disponible, puede definir una suscripción para establecer un formato de representación y entregar el informe como documento estático a un recurso compartido de archivos. Para obtener más información, vea Entrega a recursos compartidos de archivos en Reporting Services.

Sugerencias de diseño para optimizar el procesamiento del informe

Si el rendimiento del informe es su mayor preocupación, use la información siguiente como ayuda para optimizar el tiempo que se necesita para el procesamiento del informe:

  • Con los informes que tienen muchos cuadros de texto, establezca en FALSE CanGrow y CanShrink en los cuadros de texto. De forma predeterminada, cada celda de una región de datos Tablix contiene un cuadro de texto, para que el número total de cuadros de texto que se deben representar pueda crecer rápidamente.

  • En los informes que tienen muchas imágenes, establezca Ajustar tamaño automáticamente en las imágenes en un valor diferente, como Fit.

  • En los cuadros de texto, evite establecer la propiedad TextAlign en General. Este valor requiere un procesamiento condicional que depende del contenido del cuadro de texto.

  • Evite usar saltos de página horizontales cuando no se requieren. Revise los márgenes, los anchos de columna y el espacio en blanco en un informe. Por ejemplo, represente el informe en un archivo .TIFF y véalo en Microsoft Windows Picture y el visor de Fax para determinar si las páginas adicionales se están representando.

Establezca la propiedad KeepTogether en los miembros de Tablix solo cuando tenga que controlar el comportamiento de representación concreto para una región de datos Tablix. La característica KeepTogether requiere un procesamiento adicional cuando se calculan los saltos de página.

Descripción de los efectos del uso de marcas de seguimiento

Las marcas de seguimiento del Motor de base de datos de SQL Server pueden ser útiles pero es importantes entender cómo se pueden optimizar las marcas de seguimiento y cómo pueden afectar a otras aplicaciones. Por ejemplo, al usar la marca T834 en un equipo que está ejecutando tanto la base de datos como el servidor de informes, se recomienda que configure los límites de la memoria para el Motor de base de datos de SQL Server y el servidor de informes. Para obtener más información del motor de base de datos, revise la información sobre la opción 'max server memory' y, para obtener más información del servidor de informes, vea Configurar la memoria disponible para las aplicaciones del servidor de informes

-