Comment corriger les erreurs d'optimisation d'assemblage SQL Server et l'épuisement de la mémoire?


9

Le service d'optimisation d'exécution .NET ( mscorsvw) continue de consommer toute la mémoire de mon poste de travail depuis que j'ai installé SQL Server 2012 Service Pack 1.

Il consomme environ 1,6 Go de mémoire avant d'épuiser toute la mémoire disponible:

.NET Runtime Optimization Service consomme toute la mémoire disponible sur mon poste de travail.

Je peux tuer le processus, mais cela se produit à nouveau lorsque je redémarre mon ordinateur ou que j'attends assez longtemps.

Techdows suggère d'utiliser le générateur d'images natives .NET ( ngen) pour résoudre le problème.

J'ai ouvert une invite de commande et exécuté des commandes comme celle-ci:

cd C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319.1
ngen executeQueuedItems

La consommation de mémoire est mscorsvwtombée à environ 20-30 Mo et a ngenconsommé toute la mémoire restante.

ngengénéré uniquement des messages d'erreur jusqu'à ce que j'ai tué le processus. Les premières lignes de sortie ressemblaient à ceci:

Microsoft (R) CLR Native Image Generator - Version 4.0.30319.1
Copyright (c) Microsoft Corporation.  All rights reserved.
Failed to load dependency Microsoft.DataWarehouse of assembly
Microsoft.SqlServer.MaintenancePlanTasks, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.VisualStudio.DataTools.Interop of assembly 
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The system
cannot find the file specified. (Exception from HRESULT: 0x80070002)
Failed to load dependency Microsoft.Data.ConnectionUI of assembly
Microsoft.DataWarehouse, Version=11.0.0.0, Culture=neutral,
PublicKeyToken=89845dcd8080cc91 because of the following error : The located
assembly's manifest definition does not match the assembly reference.
(Exception from HRESULT: 0x80131040)

Tous les messages disent soit que le système n'a pas pu trouver d'assembly, soit qu'une définition de manifeste ne correspond pas à une référence.

Pour contourner ce problème, j'ai désactivé les services Windows clr_optimization_v4.0.30319_32et clr_optimization_v4.0.30319_64.

Cela cache le problème plutôt que de le résoudre et empêche tous les assemblys .NET d'être optimisés.

Que puis-je essayer d'autre pour résoudre ce problème?


Avez-vous essayé de réinstaller le runtime .Net?
Max Vernon

@MaxVernon Pas encore. Cela pourrait prendre un certain temps. J'essaierai cela la semaine prochaine si aucune autre solution ne se présente.
Iain Samuel McLean Elder

Apparemment, pas tant que j'obtiens une autre réponse. Avez-vous essayé de réinstaller?
Max Vernon

Réponses:


9

Ce problème est décrit sur Connect (voir les processus msiexec.exe continuent de s'exécuter après l'installation de SQL Server 2012 SP1 ) et un correctif est disponible sur KB2793634 . Il existe des commentaires sur les solutions de contournement sur Connect et ce blog si vous ne parvenez pas à installer le correctif immédiatement.

J'ai choisi de configurer 2 scripts. Le premier script s'exécute tous les jours à 1h du matin et devrait se terminer après 1 heure d'exécution

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe executequeueditems
c:\windows\Microsoft.NET\Framework64\v2.0.50727\ngen.exe executequeueditems 
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe executequeueditems

Le 2ème script s'exécute quotidiennement à 3h du matin (et chaque fois que l'ordinateur redémarre):

c:\windows\Microsoft.NET\Framework\v4.0.30319\ngen.exe queue pause
c:\windows\Microsoft.NET\Framework64\v4.0.30319\ngen.exe queue pause

De cette façon, je reçois toujours des travaux d'optimisation de la compilation (exécutés uniquement pendant les heures creuses), mais le processus mscorsvw/ msiexecest apprivoisé.


Je n'ai pas testé vos scripts. Sur mon poste de travail, j'ai pu installer le correctif immédiatement, et cela a résolu mon problème! Merci pour la référence.
Iain Samuel McLean Elder
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.