Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Exception de mémoire insuffisante dans SQL 2008

Selon un très bon article de la base de connaissances Microsoft (lié ici) cela est dû à une requête qui nécessite plus de RAM allouée qu'il n'y en a de disponible.

En d'autres termes, vous avez besoin de plus de RAM ou vous devez reconcevoir la requête pour diviser le processus en plus petits morceaux.

Ceci est un résumé de l'article complet. L'original contient des liens vers du contenu pour expliquer plus en détail le processus par lequel vous devez suivre leurs suggestions.

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

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

Méthode 1

Ajoutez suffisamment de mémoire physique à l'ordinateur.

Remarque Si vous disposez de plus de 2 gigaoctets (Go) de mémoire, vous pouvez activer le commutateur /3GB dans le fichier Boot.ini pour de meilleures performances. Pour plus d'informations sur l'utilisation du commutateur /3GB dans SQL Server.

Méthode 2

Planifiez l'exécution des rapports en dehors des heures d'ouverture lorsque les contraintes de mémoire sont moindres.

Méthode 3

Ajustez le paramètre MemoryLimit en conséquence.

Remarque :Lorsque vous restituez un rapport via le service Web Reporting Services, le service Web Reporting Services obtient le paramètre MemoryLimit à partir du fichier Machine.config. Cependant, un rapport planifié est rendu par le service Report Server Windows. Le service Report Server Windows obtient le paramètre MemoryLimit à partir du fichier RSReportServer.config.

Méthode 4

Mettez à niveau vers une version 64 bits de Microsoft SQL Server 2005 Reporting Services pour permettre à Reporting Services d'utiliser davantage de mémoire.

Méthode 5

Reconcevoir le rapport. Pour ce faire, utilisez l'une des méthodes suivantes.

Reconcevez les requêtes de rapport. Vous pouvez réduire la consommation de mémoire en reconcevant les requêtes de rapport de la manière suivante :

  • Renvoyer moins de données dans les requêtes de rapport
  • Utilisez une meilleure restriction sur la clause WHERE des requêtes de rapport.
  • Déplacez les agrégations complexes vers la source de données.

Méthode B

Exportez le rapport dans un format différent. Vous pouvez réduire la consommation de mémoire en utilisant un format différent pour afficher le rapport.

Méthode C

Simplifiez la conception du rapport.

Vous pouvez réduire la consommation de mémoire en simplifiant la conception du rapport comme suit :

  • Inclure moins de régions de données ou de contrôles dans le rapport.
  • Utilisez un rapport d'exploration amont pour afficher les détails.