Vous pouvez recevoir le message d'erreur « Exception System.OutOfMemoryException » lorsque vous utilisez SQL Server Reporting Services

Traductions disponibles Traductions disponibles
Numéro d'article: 909678 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

Symptômes

Lorsque vous utilisez Microsoft SQL Server 2000 Reporting Services ou si vous utilisez Microsoft SQL Server 2005 Reporting Services, Vous pouvez recevoir le message d'erreur suivant :

Un Erreur interne s'est produite sur le serveur de rapports.
Consultez le journal des erreurs pour plus d'informations plus d'informations. (rsInternalError) Obtenir de l'aide en ligne
Exception de type Exception System.OutOfMemoryException a été levée.
En outre, vous pouvez remarquer que le message d'erreur suivant est consigné dans le rapport de SQL Server Services de fichier journal, ou que le journal se termine brusquement :

Exception System.OutOfMemoryException : Exception de type Exception System.OutOfMemoryException a été levée.
Vous pouvez remarquer que l'un de la suite d'événements est enregistrée dans le journal d'Application Windows Microsoft :

Événement 1


aspnet_wp.exe (PID :<PIDNumber></PIDNumber>) a été recyclé, car mémoire la consommation a dépassé le <SizeLimit></SizeLimit> MO (<Percentage></Percentage> pourcentage de disponible RAM).

Événement 2


Un pool d'applications de service de processus « DefaultAppPool » a subi une erreur de communication irrécupérable avec le World Wide Web Service de publication. L'id de processus était « 9132 ». Le champ de données contient le numéro d'erreur.

Ce problème peut se produire avec un ou plusieurs de la symptômes suivants :
  • Lorsque vous essayez d'afficher un rapport, le rapport n'est jamais vous avez terminé.
  • Un rapport semble cesser de répondre.
  • Lorsque vous essayez d'afficher un rapport, un écran vide est affiché.
  • Le message d'erreur suivant s'affiche :

    La connexion sous-jacente fermée
  • Les abonnements ne sont pas remis.

Cause

Ce problème se produit car l'ordinateur n'a pas suffisamment de mémoire pour terminer l'opération demandée.

Une limitation de SQL Server 2000 Reporting Services entraîne certaines parties du traitement à des rapports mémoire lié. Par exemple, traitement des résultats et le modèle d'objet de requête rendu sont liée pour la mémoire.

L'ordinateur n'a pas suffisamment mémoire pour terminer l'opération demandée lorsque l'une ou plusieurs des opérations suivantes conditions sont remplies :
  • Un rapport est trop grand ou trop complexe.
  • La surcharge des autres processus en cours d'exécution est très haute.
  • La mémoire physique de l'ordinateur est trop petite.
Un rapport est traité en deux étapes. Les deux étapes sont l'exécution et le rendu. Ce problème peut se produire pendant la phase d'exécution ou pendant la phase de rendu.

Si ce problème se produit pendant l'exécution scène, ce problème plus probable se produit parce que trop de mémoire est consommée par le données retournées dans le résultat de la requête. En outre, les facteurs suivants affectent la consommation de mémoire pendant la phase d'exécution :
  • Regroupement
  • Filtrage
  • Agrégation
  • Tri
  • Code personnalisé
Si ce problème se produit pendant l'étape de rendu, la cause est liés à quelles informations le rapport s'affiche et la façon dont le rapport affiche le informations. Par exemple, les facteurs suivants affectent la consommation de mémoire pendant la phase de rendu :
  • Le nombre et les types de contrôles
  • La relation entre les contrôles
  • La mise en forme
  • La quantité de données qui s'affiche
Pour plus d'informations sur le composant processeur de rapports, reportez-vous au le site Web de Microsoft Developer Network (MSDN) suivant :
http://msdn2.Microsoft.com/en-us/library/aa179471 (SQL.80) .aspx

Résolution

Pour résoudre ce problème, appliquez l'une des méthodes suivantes.

Méthode 1

Ajouter suffisamment de mémoire physique sur l'ordinateur.

Remarque : Si vous avez plus de 2 gigaoctets (Go) de mémoire, vous pouvez activer le commutateur/3 GB dans le fichier Boot.ini pour de meilleures performances. Pour plus d'informations sur la façon d'utiliser le commutateur/3 GB dans SQL Server, cliquez sur le numéro d'article suivant pour afficher l'article correspondant dans la Base de connaissances Microsoft :
274750Comment faire pour configurer SQL Server pour utiliser plus de 2 Go de mémoire physique

Méthode 2

Planifier les rapports à exécuter lors des heures creuses lorsque les contraintes de mémoire sont inférieur.

Méthode 3

Ajuster le MemoryLimit définir en conséquence.

Remarque : Lorsque le rendu d'un rapport via le Web de Reporting Services service, le service Web Reporting Services Obtient le paramètre MemoryLimit du fichier Machine.config. Toutefois, un rapport planifié est restitué par le service Windows Report Server. Windows Report Server service Obtient le paramètre MemoryLimit du fichier RSReportServer.config.

Pour plus d'informations informations sur le paramètre MemoryLimit , reportez-vous à la section « Informations complémentaires ».

Méthode 4

Mise à niveau vers une version 64 bits de Microsoft SQL Server 2005 Reporting Services.

Méthode 5

Modifier l'état. Pour ce faire, utilisez une des méthodes suivantes.

Méthode A

Redéfinir les requêtes de rapport. Vous pouvez réduire la consommation de mémoire par nouvelle conception de requêtes d'état dans l'une des manières suivantes :
  • Renvoyer moins de données dans les requêtes de rapport.
  • Utiliser une restriction mieux sur la clause WHERE de l'état requêtes.
  • Déplacer les agrégations complexes à la source de données.

Méthode B

Exporter le rapport dans un format différent. Vous pouvez réduire la mémoire consommation à l'aide d'un autre format pour afficher le rapport. Les éléments suivants tableau répertorie plusieurs formats d'exportation dans l'ordre de la plupart de la consommation de mémoire à consommation de mémoire.
Réduire ce tableauAgrandir ce tableau
FormatDescription
Microsoft ExcelGénère le rendu d'un rapport dans Excel
Image (TIFF)Génère le rendu d'un rapport sous la forme d'une image statique dans un format orienté sur la page
PDFGénère le rendu d'un rapport dans un Format de Document Portable (PDF)
HTMLRend le rapport au format HTML dans un navigateur
CSVGénère le rendu d'un rapport au format délimité par des virgules ; le rapport s'ouvre dans un outil de visualisation qui est associé à des formats de fichiers CSV
XMLGénère le rendu d'un rapport en XML ; le rapport s'ouvre dans une navigateur
Remarque : Si une transformation XSLT n'est pas appliquée, ce format sera consommer moins de mémoire que le format CSV consomme.

Méthode C

Simplifier la conception du rapport. Vous pouvez réduire la consommation de mémoire par Simplification de la structure de l'état dans l'une des manières suivantes :
  • Inclure moins de régions de données ou de contrôles dans le rapport.
  • Utiliser un rapport d'extraction pour afficher les détails.
En outre, si le but du rapport est uniquement les données collection, vous pouvez utiliser les autres produits Microsoft pour améliorer les performances. Pour exemple, vous pouvez utiliser les Services DTS (Data Transformation) ou Microsoft SQL Server 2005 Integration Services.

Exemple

L'exemple suivant montre comment résoudre ce problème. Prenons l'exemple suivant :
  • Un rapport qui renvoie 160 pages dans le Gestionnaire de rapports ne peut pas être rendu au format PDF et au format Excel. Le rapport de dépassent largement 250 pages lorsque vous utilisez une taille de page de 8,5 x 11 pouces.
  • La source de données pour le rapport renvoie 500 mégaoctets (Mo) des données au serveur de rapports. En règle générale, SQL Server 2000 Reporting Services nécessite deux ou trois fois la quantité de mémoire utilisée par le groupe de données. Par conséquent, SQL Server 2000 Reporting Services requiert presque 1,5 Go de mémoire Pour effectuer le rendu du rapport.
Pour résoudre le problème dans cet exemple, modifier l'état donc que le rapport affiche les données de synthèse uniquement pour un ensemble limité de valeurs de filtre. En outre, assurez-vous que l'agrégation se produit dans la base de données de requête qui extrait le rapport de données et que l'agrégation n'est pas dans le rapport lui-même. Ces méthodes permettent de réduire considérablement la quantité de données qui sont retournées au le serveur de rapports. Par conséquent, le rendu du rapport avec succès et bien plus encore rapidement.

Plus d'informations

Lorsque vous utilisez SQL Server 2000 Reporting Services, vous pouvez rencontrer un problème lié à la mémoire qui est provoqué par l'une des opérations suivantes conditions d'erreur :
  • L'erreur d'exception System.OutOfMemoryException est levée.
  • Les limites de mémoire sont atteintes.
La principale différence entre les conditions d'erreur est le niveau de les conditions d'erreur interceptées et gérées.

L'erreur d'exception System.OutOfMemoryException est une erreur qui est déclenchée par SQL Server 2000 Reporting Services lorsqu'une opération demande plus de mémoire du système et le système ne peut pas fournir la mémoire. Lorsque cette erreur se produit, SQL Server 2000 Reporting Services arrête le processus de manière dangereuse. L'arrêt n'est pas sécurisé Étant donné que SQL Server 2000 Reporting Services partage des ressources entre exécution demandes. Par conséquent, SQL Server 2000 Reporting Services ne garantit pas que les données sont toujours sûrs pour toutes les demandes.

Les limites de mémoire sont un ensemble de paramètres pour aider à protéger le système à partir de déstabiliser potentiellement les conditions. Par exemple, la limites d'empêcher un serveur de rapports de mémoire du processus de l'à l'aide de trop de mémoire. Les limites de mémoire sont spécifiés via le paramètre MemoryLimit et le paramètre MaximumMemoryLimit qui sont définis dans le fichier RSReportServer.config. Lorsque les limites de mémoire sont atteintes, les erreurs sont déclenchés par le Microsoft .NET Framework avant SQL Server 2000 Reporting Services s'exécute hors de mémoire.

Vous pouvez rendre un rapport à partir d'un site Web ou d'une tâche tâche. Par conséquent, les conditions d'erreur peuvent se produire dans deux environnements différents dans SQL Server 2000 Reporting Services. Les environnements sont les suivants :
  • Le service Web Reporting Services
  • Le service Windows Report Server
Par conséquent, les combinaisons suivantes de conditions d'erreur et environnements existent.

Le service Web Reporting Services et l'erreur d'exception System.OutOfMemoryException

Messages d'exception et les messages d'arrêt qui sont similaires à la messages suivants sont enregistrés dans le journal de SQL Server 2000 Reporting Services fichier (ReportServerService_<timestamp></timestamp>.log) :

w3wp! bibliothèque! 1b3c! 07/11/2005-10: 38:00:: e erreur : trouvé Exception System.OutOfMemoryException : Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException : Exception de type Microsoft.ReportingServices.ReportRendering.ReportRenderingException a été levée. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException : Exception de type Microsoft.ReportingServices.ReportRendering.ReportRenderingException a été levée. ---> Exception System.OutOfMemoryException : Exception de type Exception System.OutOfMemoryException a été levée.

w3wp! bibliothèque! 1b3c! 07/11/2005-10: 38:00:: e erreur : fin de travail processus
Remarque : Par défaut, le ReportServerService_<timestamp></timestamp>le fichier .log qui se trouve dans l'emplacement suivant :
\Microsoft SQL Server\<Instance of="" sql="" server=""></Instance>\Reporting Services\LogFiles
En outre, les événements qui sont semblables à l'événement suivant sont enregistré dans le journal applications :


Événement Type : avertissement
Événement Source : W3SVC
Catégorie d'événement : aucun
ID d'événement : 1011
Date : Date
Heure : Heure
Utilisateur : n/a
Ordinateur : Nom_Ordinateur
Description :
Un service de processus pool d'applications « DefaultAppPool » a subi une erreur de communication irrécupérable avec le Service de publication World Wide Web. L'id de processus était « 9132 ». Le champ de données contient le numéro d'erreur.

SQL Server 2000 Reporting Services ne peut pas gérer harmonieusement cette erreur. Les captures de service Web Reporting Services le une exception et arrête le processus. Vous devez renvoyer le demande.

Pour résoudre ce problème, vous pouvez ajouter davantage de mémoire physique à le système ou de réduire la consommation de mémoire des autres processus.

Dans l'idéal, vous pouvez ajuster le paramètre MemoryLimit ou le paramètre de Pool d'applications de Microsoft Internet Information Services (IIS) 6.0 donc Cette erreur est interceptée avant que la situation d'insuffisance de mémoire se produit. Par conséquent, le processus est traité avec plus harmonieusement. Vous devez faire des essais avec la paramètres, et il n'y a aucune garantie que vous atteindrez toujours la mémoire limite tout d'abord.

Le service Web Reporting Services et les limites de mémoire

Les messages sont consignés dans le journal des événements Windows et dans le SQL Server Fichier journal 2000 reporting Services. Le fichier journal du service Web Reporting Services Indique que le processus est en cours d'arrêt. Toutefois, SQL Server 2000 Reporting Services ne contrôle pas l'arrêt et ne peut pas enregistrer les informations d'erreur à propos de l'arrêt.

Vous pouvez constater qu'un des événements suivants enregistré dans le journal applications :

Événement 1


aspnet_wp.exe (PID :<PIDNumber></PIDNumber>) a été recyclé, car mémoire la consommation a dépassé le <SizeLimit></SizeLimit> MO (<Percentage></Percentage> pourcentage de disponible RAM).

Événement 2


Un processus de travail avec l'id de processus de « 2420 » service de pool d'applications « DefaultAppPool » a demandé un nouveau cycle car il a atteint sa limite de mémoire virtuelle.

Lorsque les limites de la mémoire sont atteintes, Microsoft ASP.NET ou IIS 6.0 gère cette erreur et arrête le Service de notification des Services Web. Les limites de mémoire sont spécifiés par ASP.NET ou par IIS 6.0 et ne sont pas contrôlées par SQL Server 2000 Reporting Services.

Vous pouvez modifier les limites de mémoire sous la <processModel></processModel> section dans le fichier Machine.config.

Remarque : Si vous exécutez IIS 6.0 en mode natif, le fichier Machine.config fichier n'est pas utilisé. Les limites de mémoire sont contrôlées par les propriétés de la pool d'applications dans IIS 6.0.

Pour plus d'informations sur la mémoire configuration dans ASP.NET et IIS 6.0, reportez-vous aux sites Web MSDN suivants :

Le service Windows Report Server et l'erreur d'exception System.OutOfMemoryException

Les rapports ne sont pas remis à un partage de fichiers ou remis à la destinataires auxquels vous êtes abonnés. Lorsque le rendu planifié traitement automatique redémarre, le processus tente d'exécuter le même abonnement à nouveau dans le cadre de la processus de récupération. Messages d'erreur semblables à l'erreur suivante les messages sont enregistrés dans le fichier journal SQL Server 2000 Reporting Services :

ReportingServicesService! bibliothèque! 618! 7/9/2003-16: 06:01:: État : Erreur : Exception de type System.OutOfMemoryException a été levée.
ReportingServicesService! notification! 618! 7/9/2003-16: 06:01:: erreur levée par le fournisseur de remise : System.OutOfMemoryException : Exception de type Exception System.OutOfMemoryException a été levée.
ReportingServicesService! notification! 618! 7/9/2003-16: 06:01:: Notification 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6 terminée. Réussite : Faux, état : erreur : Exception de type System.OutOfMemoryException a été levée., DeliveryExtension : E-mail du serveur de rapport, rapport : Facture, tentative 0
ReportingServicesService! dbpolling! 618! 7/9/2003-16: 06:01:: Élément de fin de traitement de NotificationPolling 380e6cd2-3e3d-4549-9ed5-9fb6b42266b6
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09:30:: i INFO : Recyclage du domaine mémoire contrainte app demandé
ReportingServicesService! servicecontroller! 568! 7/9/2003-16: 09:30:: i INFO : Recyclage du service de domaine par défaut
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: EventPolling arrêté du service d'interrogation
ReportingServicesService! dbpolling! 87c! 7/9/2003-16: 09:30:: EventPolling thread de pulsations Quitter pour arrêter.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: Arrêté du service d'interrogation de NotificationPolling
ReportingServicesService! dbpolling! 880! 7/9/2003-16: 09:30:: Thread de pulsations NotificationPolling Quitter pour arrêter.
ReportingServicesService! dbpolling! 568! 7/9/2003-16: 09:30:: SchedulePolling arrêté du service d'interrogation
Captures de service Windows Report Server le une exception et arrête le processus. Ce n'est pas un processus progressif et tout autres demandes en cours sont perdues.

Vous ne pouvez pas configurer les paramètres pour éviter ce problème. Ce problème est affecté par la quantité de mémoire sur l'ordinateur et par la consommation de mémoire d'autres processus.

Pour résoudre ce problème, vous pouvez ajouter davantage de mémoire physique à l'ordinateur ou réduire la consommation de mémoire d'autres processus.

Le service Windows Report Server et les limites de mémoire

Les rapports ne sont pas remis à un partage de fichiers ou remis à la destinataires auxquels vous êtes abonnés. La propriété Status d'un abonnement a la valeur « Abandon de Thread ». Erreur les messages qui sont semblables aux messages d'erreur suivants sont consignés dans le SQL Fichier journal de Server 2000 Reporting Services :

ReportingServicesService! reportrendering! 17a8! 09/28/2005-16: 10:12:: e erreur : lever Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException : Exception de type Microsoft.ReportingServices.ReportRendering.ReportRenderingException a été levée., Info : Microsoft.ReportingServices.ReportProcessing.WrapperReportRenderingException : Exception de type Microsoft.ReportingServices.ReportRendering.ReportRenderingException a été levée. ---> Microsoft.ReportingServices.ReportRendering.ReportRenderingException : Exception de type Microsoft.ReportingServices.ReportRendering.ReportRenderingException a été levée. ---> System.Threading.ThreadAbortException : Thread était en cours. abandonnée.
ReportingServicesService! runningjobs! 17a8! 09/28/2005-16: 10:12:: i INFO : CancelableJobExecution.Execute interceptée certains autre exception d'abandon de thread
ReportingServicesService! bibliothèque! 17a8! 09/28/2005-16: 10:12:: i INFO : L'initialisation de EnableExecutionLogging à « True » comme spécifié dans le système du serveur Propriétés.
ReportingServicesService! runningjobs! 1810! 09/28/2005-16: 10:12:: i INFO : CancelableJobExecution.Execute interceptée certains autre exception d'abandon de thread
ReportingServicesService! bibliothèque! 1810! 09/28/2005-16: 10:12:: i INFO : L'initialisation de EnableExecutionLogging à « True » comme spécifié dans le système du serveur Propriétés.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10:12:: Traitement de l'élément n'est plus de NotificationPolling 6e786bb5-3e4d-462 bis-92fc-2942e6aec007, va être remise en attente.
ReportingServicesService! dbpolling! 1810! 09/28/2005-16: 10:12:: travail de la file d'attente thread a provoquée une exception non gérée : System.Threading.ThreadAbortException : Thread a été abandonné.
à Microsoft.ReportingServices.Library.NotificationQueueWorker.HandleNotification (QueueItem élément)
à Microsoft.ReportingServices.Library.NotificationQueueWorker.QueueWorker (QueueItem élément)
à Microsoft.ReportingServices.Library.QueuePollWorker.WorkItemStart (objet état)
Remarque : Ces messages sont suivis par une brutale fin dans le journal .

Le service Windows Report Server tente de terminer l'existant demandes. En outre, le service Windows Report Server surveille son propre paramètres de configuration pour vous assurer qu'une opération demandée ne dépasse pas les limites de mémoire. Si une opération demandée dépasse les limites de mémoire, le Service de rapport Windows Server arrête le processus. Windows Report Server service place automatiquement l'échec des travaux dans une liste de tâches de démarrage. Lors de la Les tentatives de service Windows Report Server, le redémarrage de service Windows Report Server Pour relancer les travaux.

Deux paramètres dans le fichier RSReportServer.config affectent la configuration de mémoire. Les entrées spécifiques sont le paramètre MaximumMemoryLimit et le paramètre MemoryLimit dans la <Service></Service> balise.

Ces valeurs représentent un pourcentage de physique mémoire. Si la consommation de mémoire de l'existant demande atteint la pourcentage est spécifié par le paramètre MemoryLimit , le service Windows Report Server s'arrête en tenant demandes supplémentaires. Toutefois, les demandes qui sont actuellement en cours continuent. Les nouvelles demandes sont acceptées à nouveau après que la mémoire disponible est inférieur au pourcentage qui est spécifié par le paramètre MemoryLimit .

Si la consommation de mémoire de l'existant demandes atteint le pourcentage est spécifié par le paramètre MaximumMemoryLimit , est le domaine d'application serveur rapport s'est arrêté.

Ces paramètres s'apparentent les limites de mémoire sous la <processModel></processModel> de section dans le fichier Machine.config et utiliser efficacement les mêmes moyen. Ces paramètres de prêtent la cohérence entre le service Web Reporting Services et le service Windows Report Server.

Références

Pour plus d'informations, consultez les rubriques suivantes dans SQL Server Documentation en ligne :
  • Comment ajouter un lien de rapport d'extraction (état Concepteur)
  • Exportation de rapports
  • Fichier de configuration RSReportServer
  • Recyclage des domaines d'application de serveur de rapport

Propriétés

Numéro d'article: 909678 - Dernière mise à jour: samedi 4 mai 2013 - Version: 5.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft SQL Server 2000 Reporting Services
  • Microsoft SQL Server 2005 Reporting Services
Mots-clés : 
kbsqlsetup kbexpertiseadvanced kbprb kbmt KB909678 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu d'une traduction automatique réalisée par un logiciel Microsoft et non par un traducteur professionnel. Cette traduction automatique a pu aussi être révisée par la communauté Microsoft grâce à la technologie Community Translation Framework (CTF). Pour en savoir plus sur cette technologie, veuillez consulter la page http://support.microsoft.com/gp/machine-translation-corrections/fr. Microsoft vous propose en effet des articles traduits par des professionnels, des articles issus de traductions automatiques et des articles issus de traductions automatiques révisées par la communauté Microsoft, de manière à ce que vous ayez accès à tous les articles de notre Base de connaissances dans votre langue. Il est important de noter que les articles issus de la traduction automatique, y compris ceux révisés par la communauté Microsoft, peuvent contenir des erreurs de vocabulaire, de syntaxe ou de grammaire. Microsoft ne pourra être tenu responsable des imprécisions, erreurs, ainsi que de tout dommage résultant d?une traduction incorrecte du contenu ou de son utilisation par les clients.
La version anglaise de cet article est la suivante: 909678
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com