servidor rsserverconfigurationerror rsreportserverdatabaseunavailable rsprocessingaborted puede produjo procesar para lector informes informe establecer error encontrado dentro datos crear conjunto configuración conexion con reporting-services matrix max rows rdl

reporting services - rsserverconfigurationerror - SSRS-OutOf MemoryException: ¿existe un límite en la cantidad de filas que se pueden mostrar?



rsreportserverdatabaseunavailable (3)

No creo que haya una limitación, aparte de su configuración de hardware. Si está en una máquina de 32 bits, el proceso de trabajo que está procesando esto tiene menos de 2 gigabytes de memoria para trabajar, probablemente más cerca de 1 gigabyte cuando se tiene en cuenta la memoria del modo kernel. Si vas a publicar grandes informes como este, probablemente necesites una configuración de 64 bits con al menos 4 gigas de memoria o más en la caja. Esta configuración permitirá que el proceso de trabajo asigne más de 2 gigas de memoria utilizable para completar estas grandes solicitudes sin problemas.

Si una actualización de hardware no es una opción, también puede considerar estas alternativas.

  • Dijiste que el informe era un informe de matriz, por lo que parece que no estás mostrando toda esa información al usuario, sino que la agregas. ¿Podría preagrupar algunos de estos datos en la base de datos y luego simplemente usar SSRS para la visualización?

  • Como el informe no es más que un archivo XML, compile la cadena XML del informe desde el servidor SQL o utilizando algún script o proceso. Esto puede ser mucho trabajo.

He creado un rdl doc que apunta a un proceso que devuelve 90 000 filas y obtengo una excepción de falta de memoria. ¿Hay un límite en la cantidad de filas que pueden manejar los proyectos del informe?

Actualmente he cambiado el proceso que dirige mi informe para que solo haga una selección de Top 90 000. Mis especificaciones son para poder crear un informe con 120 000 filas. Mi informe es una matriz.

Juro la semana pasada que generé un informe que tiene 10.6800 filas pero ahora, de repente, no puedo.

He escrito una extensión de representación y aquí es parte de la excepción cuando paso al código.

eInfo: 12/02/2009 12:03:53 PM prairieFyre.ReportActions.RenderReport: Informe de error de representación Microsoft.Reporting.WinForms.LocalProcessingException: Se ha producido un error durante el procesamiento del informe local. ---> Microsoft.ReportingServices.ReportProcessing.ReportProcessingException: se ha producido un error inesperado en el procesamiento de informes. ---> System.OutOfMemoryException: Excepción de tipo ''System.OutOfMemoryException'' fue lanzado. en System.IO.MemoryStream.set_Capacity (valor Int32) en System.IO.MemoryStream.EnsureCapacity (valor Int32) en System.IO.MemoryStream.Write (byte [] búfer, desplazamiento Int32, recuento de Int32) en System.IO.BinaryWriter .Write (Valor de cadena) en Microsoft.ReportingServices.ReportProcessing.Persistence.IntermediateFormatWriter.ReportServerBinaryWriter.WriteString (String stringValue) ....


La pila indica que el MemoryStream utilizado para almacenar el resultado de la ejecución del informe no puede aumentar (duplicar) su tamaño.

Esto generalmente es causado por la fragmentación del espacio de direcciones, que comúnmente no se puede resolver agregando hardware.

Microsoft ReportViewer tiene una cantidad limitada de datos que puede procesar porque está diseñado para almacenar el resultado intermedio de ejecución de informes en un MemoryStream que lamentablemente necesita una cantidad cuadráticamente creciente de espacio de direcciones libre contiguo, que en una aplicación .NET habitual (espacio de direcciones de 2GB ) no es más grande que 256 MB, y a menudo mucho más pequeño que eso.

En esta secuencia, por ejemplo, se almacenan todos los valores de campo, valores agregados, expresiones e imágenes, por lo que el tamaño depende directamente del tamaño de los conjuntos de datos agregados al informe.

Para analizar el espacio de direcciones y los objetos de una aplicación .NET, es mejor depurar con WinDBG (Herramientas de depuración para Windows) y las extensiones SOS.

Los valiosos comandos para analizar la fragmentación de direcciones son:

  • ! address -summary
  • lm
  • ! EEHeap -gc
  • ! DumpHeap -stat

En este caso particular, es posible reducir la cantidad de datos al agregar previamente valores que ya están en la fuente de datos y no en la matriz.

El artículo de Knowledge Base proporciona más consejos: "Puede recibir el mensaje de error ''System.OutOfMemoryException'' cuando usa SQL Server Reporting Services" [1].

[1]: http://support.microsoft.com/kb/909678 Mensaje de error "System.OutOfMemoryException" cuando usa SQL Server Reporting Services