Symptômes
Prenons l’exemple du scénario suivant :
-
Vous avez déployé un écouteur de groupe de disponibilité et de disponibilité SQL Server AlwaysOn.
-
La détection de l’intégrité AlwaysOn détecte un problème d’intégrité lié au serveur SQL Server hébergeant le réplica principal et commence la transition du groupe de disponibilité du rôle principal au rôle de résolution. Cette partie implique la mise hors connexion de la ressource de l’écouteur du groupe de disponibilité.
-
L’opération qui tente d’arrêter la ressource de l’écouteur est susceptible de ne pas aboutir et les notifications de diagnostic SQL Server ne produisant aucun rapport sur le blocage en tant que programmateur sans yield dans le journal des erreurs SQL Server.
-
L’opération risque de se bloquer indéfiniment lors de la tentative d’arrêt de l’écouteur de groupe de disponibilité s’il n’y a pas d’assistance.
Dans ce scénario, les bases de données de disponibilité du groupe disponibilité restent en mode récupération et ne peuvent pas être mises en ligne. Les messages d’erreur suivants s’affichent :
<date> <temps> <nom du serveur> * * * impossible d’obtenir le contexte du thread pour le SPID 0<date> <temps> <nom du serveur> <1 * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *> <2 date> <Time> <nom du serveur> <7 *> <8 date> < temps> <nom du serveur> <3 * commencer la vidage de la pile, comme suit :> <4 date> <durée> <nom du serveur> <9 *> <0 date> < temps > <3 SPID 1068> <4> <> <nom du serveur> <9> <0> <> <> <5 nom du serveur> <6> <nom du serveur> < de date> de l’heure<du nom du serveur> <*> <de date>de date nom du serveur * * nom du serveur * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *>> <> <<
Cause
Le problème se produit car le thread arrête le gel des ressources de l’écouteur et ne peut pas être généré. Ce thread sans yield a bloqué d’autres threads sur le même processeur, ce qui a empêché d’autres threads d’essayer de récupérer les bases de données de disponibilité.
Résolution
Le problème a été résolu dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 9 pour SQL Server 2012 SP1 /en-us/help/2931078
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs et les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
Statut
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.