SQL Server Agent initiant l'auto-terminaison

9

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:

  1. Pour corriger l'arrêt aléatoire du service Agent SQL Server
  2. 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é.

SQLPRODDBA
la source
Lorsque l'agent est tué, pouvez-vous accéder au serveur et vérifier l'utilisation du fichier d'échange? Il existe des éléments Connect à ce sujet causés par l'épuisement du fichier d'échange par diverses applications (y compris HyperBac).
Cody Konior
Je vérifierai cela lorsque cela se reproduira.
SQLPRODDBA
Lors de la mise à niveau de SQL Server 2005 EE vers SQL Server 2012 SE, avez-vous effectué une mise à niveau sur place? Ou avez-vous fait un nouvel épisode de SQL Server? Je demande parce qu'au début des années 2000, je suis tombé sur quelques échecs avec des mises à niveau sur place qui ont été résolues en supprimant complètement le dossier et en réinstallant SQL Server dans un dossier vide. (Oui, c'était une nuisance.)
RLF

Réponses:

1

É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/

stacylaray
la source