Au cours du mois dernier, l'un de mes serveurs est confronté à des problèmes avec l'Agent SQL Server. Il s'arrête automatiquement avec l'erreur ci-dessous, ce qui se produit au hasard:
Fichier de sortie de l'agent SQL
[097] Fuite de mémoire détectée [204 octets]
Exception 5 interceptée à la ligne 403 du fichier e: \ sql9_sp2_t \ sql \ komodo \ src \ core \ sqlagent \ src \ alerter.cpp. SQLServerAgent initiant l'auto-terminaison
J'ai recherché cette erreur sur Google, mais je n'ai pas obtenu beaucoup d'informations à ce sujet. SQL Server et Agent s'exécutent avec le même compte de domaine; toutefois, le problème concerne uniquement le service SQL Server Agent.
Je ne parviens pas non plus à voir le service SQL Server Agent dans SQL Server Configuration Manager. J'ai vérifié le journal des erreurs SQL Server et les journaux de l'Observateur d'événements Windows, mais je n'ai vu aucune activité suspecte.
Mes paramètres de mémoire sont configurés correctement. Le serveur a 32 Go de RAM et SQL Server est affecté pour utiliser une mémoire maximale de 26 Go.
Détails du système:
- SQL Server 2012 SP2 Std Edition 11.0.5058 64 bits
- Windows Server 2008 R2 Ent Edition 64 bits
- Dédié à SQL Server (aucune autre application exécutée sur le serveur)
- Le serveur a été mis à niveau il y a quelques mois de SQL Server 2005 EE à 2012 SE.
- Nous n'utilisons pas de serveur de transfert d'événements .
J'ai également vérifié la base de données msdb . Ran checkdb dessus et il s'est terminé avec succès sans aucune erreur. J'ai besoin de votre aide pour réparer deux choses:
- Pour corriger l'arrêt aléatoire du service Agent SQL Server
- Pour ajouter le service SQL Server Agent dans SQL Server Configuration Manager
Nous avons un logiciel tiers de surveillance, nous sommes donc immédiatement informés si le service d'agent s'arrête. Pour l'instant, nous ne faisons que redémarrer le service. Mais nous voulons trouver la cause profonde.
J'ai exécuté la requête suivante suggérée par Sean Gallardy et j'ai récupéré 95 lignes. Je ne sais pas comment interpréter le résultat.
select *
from sys.dm_os_loaded_modules
where name not like '%microsoft%'
Malheureusement, je ne peux pas publier les résultats pour des raisons de sécurité.
Jusqu'à ce que je trouve la solution à ce problème, j'ai ajouté des tentatives de nouvelle tentative à l'Agent SQL Server afin qu'il puisse redémarrer automatiquement lorsqu'il est arrêté.
la source
Réponses:
Étant donné que vous avez récemment mis à niveau SQL Server 2005 EE vers 2012 SE il y a quelques mois, vous devez enregistrer et effacer vos journaux d'événements, car SqlAgent peut se bloquer lorsqu'il voit les ID de journal des événements d'une ancienne version de SQL Server. Par exemple, l'agent peut se bloquer car il lit un événement enregistré par une génération SQL Server antérieure à la génération actuelle, qui ne contient que des données avec UNE chaîne d'insertion et l'agent essaiera de le formater en utilisant les dernières informations de ressource qui nécessitent DEUX chaînes. Cela entraînerait une brève fuite de mémoire juste avant son arrêt car un tampon est alloué pour la chaîne dans laquelle il essaie d'imprimer lorsque le crash se produit.
En ce qui concerne le service d'agent non répertorié dans le gestionnaire de configuration, il existe plusieurs possibilités: https://support.microsoft.com/en-us/kb/941823
Assurez-vous que vous exécutez 2012 Configuration Manager
Vous pouvez essayer de reconstruire le référentiel WMI: https://blogs.technet.microsoft.com/askperf/2009/04/13/wmi-rebuilding-the-wmi-repository/
la source