Symptômes
Cette mise à jour inclut les améliorations suivantes pour la prise en charge du délai d’expiration du bail De Microsoft SQL Server AlwaysOn :
-
Le message Délai d’expiration du bail affiche et journalise désormais l’heure actuelle et l’heure de renouvellement attendue.
-
Un nouveau message d’erreur a été ajouté pour les workers de bail qui indique clairement la raison du délai d’expiration du bail.
-
Un nouvel événement étendu et une nouvelle mémoire tampon en anneau pour les workers de bail ont été ajoutés. Celles-ci indiquent clairement les étapes du bail.
Résolution
Le problème a été résolu pour la première fois dans les Service Packs suivants pour SQL Server.
Pour plus d’informations sur SQL Server 2012 Service Pack 3 (SP3), consultez bogues corrigés dans SQL Server 2012 Service Pack 3.
Service Pack 2 pour SQL Server pour SQL Server 2014À propos des Service Packs pour SQL Server Les packs de service sont cumulatifs. Chaque nouvelle version contient tous les correctifs fournis dans les Service Packs précédents et tous les nouveaux correctifs. Nous vous recommandons d’appliquer le dernier Service Pack et la dernière mise à jour cumulative pour ce Service Pack. Il n'est donc pas nécessaire d'installer la version antérieure d'un Service Pack avant d'installer la dernière version disponible. Utilisez le tableau 1 de l’article suivant pour obtenir plus d’informations sur le dernier Service Pack et la dernière mise à jour cumulative.Comment déterminer la version, l’édition et le niveau de mise à jour de SQL Server et de ses composants
Informations supplémentaires
Pour fournir des informations supplémentaires, de nouveaux messages d’erreur ont été ajoutés à SQL Server. Le tableau suivant répertorie et explique chacun d’eux.
|
Erreur |
Message d'erreur |
Cause |
Correctives |
|---|---|---|---|
|
19419 |
Le renouvellement du bail entre le groupe de disponibilité ' %.*ls' et le cluster de basculement Windows Server a échoué, car le bail existant n’est plus valide. |
Le travail de bail côté SQL Server n’a pas été planifié à temps pour traiter le signal d’événement du cluster. |
Vérifiez l’utilisation du processeur sur le serveur, car SQL Server worker de bail semble être affamé. |
|
19420 |
Le groupe de disponibilité ' %.*ls' est explicitement invité à arrêter le renouvellement du bail. |
Le renouvellement du bail s’arrête dans le cadre de la mise hors connexion du groupe de disponibilité. Il s’agit d’informations uniquement. |
|
|
19421 |
Le renouvellement du bail entre le groupe de disponibilité ' %.*ls' et le cluster de basculement Windows Server a échoué, car le renouvellement n’a pas eu lieu dans l’intervalle du bail. |
L’assistant de bail côté cluster n’a pas signalé le SQL Server worker de bail à temps. |
Vérifiez la ressource de groupe de disponibilité correspondante dans le cluster WSFC pour voir si elle a signalé une erreur. |
|
19422 |
Le renouvellement du bail entre le groupe de disponibilité ' %.*ls' et le cluster de basculement Windows Server a échoué en raison d’une erreur windows avec le code d’erreur (' %d'). |
Le travail de bail côté SQL Server n’a pas pu renouveler le bail en raison d’une erreur windows. |
Vérifiez le code d’erreur windows et effectuez l’action corrective. |
|
19423 |
Le bail du groupe de disponibilité ' %.*ls' n’est plus valide pour démarrer le processus de renouvellement du bail. |
Lorsque le travailleur du bail a commencé à traiter le temps de bail excédentaire fourni par l’appel en ligne, le bail était déjà arrivé à expiration. Cela peut se produire en raison de problèmes de planification. |
Vérifiez l’utilisation du processeur sur le serveur, car SQL Server worker de bail semble être affamé. |
|
19424 |
Le worker de bail du groupe de disponibilité ' %.*ls' met désormais en veille la durée de bail excédentaire ( %u ms) fournie en ligne. Il s’agit d’un message d’information uniquement. Aucune action de l’utilisateur n’est requise. |
Information. Temps en ligne supplémentaire alloué au démarrage du thread de renouvellement de bail et dans le cadre de la routine en ligne du groupe de disponibilité. |
Exemple d’erreur 19419 : si vous utilisez un débogueur pour l’attacher à SQL Server, il interrompt la maintenance des threads dans le processus SQL Server jusqu’à ce que vous repreniez le processus SQL Server. Lorsque vous reprenez SQL Server, les éléments suivants sont signalés dans le journal des erreurs SQL Server :
<Date Et heure> Erreur du serveur : 19419, Gravité : 16, État : 1. <Date Heure> Server Windows Server cluster de basculement n’a pas reçu de signal d’événement de processus de SQL Server groupe de disponibilité d’hébergement « ag » dans le délai d’expiration du bail. <Date Et heure> Erreur du serveur : 19407, Gravité : 16, État : 1. <Date Et heure> Serveur Le bail entre le groupe de disponibilité « ag » et le cluster de basculement Windows Server a expiré. Un problème de connectivité s’est produit entre le instance de SQL Server et le cluster de basculement Windows Server. Pour déterminer si le groupe de disponibilité bascule correctement, case activée la ressource de groupe de disponibilité correspondante dans le cluster de basculement Windows Server. <Date Time> Server AlwaysOn : le réplica local du groupe de disponibilité « ag » passe hors connexion, car le bail a expiré ou le renouvellement du bail a échoué. Il s’agit d’un message d’information uniquement. Aucune action de l’utilisateur n’est requise. <Date Et heure> Serveur L’état du réplica de disponibilité local dans le groupe de disponibilité « ag » est passé de « PRIMARY_NORMAL » à « RESOLVING_NORMAL ». L’état réplica a changé en raison d’un démarrage, d’un basculement, d’un problème de communication ou d’une erreur de cluster. Pour plus d’informations, consultez le tableau de bord du groupe de disponibilité, SQL Server journal des erreurs, Windows Server console de gestion du cluster de basculement ou Windows Server journal du cluster de basculement.
L’erreur 19419 est retournée, car SQL Server n’a pas répondu au service de cluster. Vous pouvez également recevoir un message d’erreur d’expiration de bail (19407) ainsi que l’erreur 19419.Exemple d’erreur 19424 : Voici le message de durée de bail excédentaire signalé juste avant la transition du groupe de disponibilité vers le rôle PRIMAIRE :
<Date Time> Server Le worker de bail du groupe de disponibilité « ag » met désormais en veille la durée de bail excédentaire (164766 ms) fournie en ligne. Il s’agit d’un message d’information uniquement. Aucune action de l’utilisateur n’est requise. <Date Et heure> Serveur L’état du réplica de disponibilité local dans le groupe de disponibilité « ag » est passé de « PRIMARY_PENDING » à « PRIMARY_NORMAL ». L’état réplica a changé en raison d’un démarrage, d’un basculement, d’un problème de communication ou d’une erreur de cluster. Pour plus d’informations, consultez le tableau de bord du groupe de disponibilité, SQL Server journal des erreurs, Windows Server console de gestion du cluster de basculement ou Windows Server journal du cluster de basculement.
Les availability_group_lease_expired et hadr_ag_lease_renewal XEvents ont été améliorés, avec l’ajout de points de données qui fournissent plus d’informations sur l’état du bail. Le tableau suivant décrit les améliorations apportées à ces XEvents :
|
XEvent |
Nouvelle colonne |
Description |
|---|---|---|
|
availability_group_lease_expired |
current_time |
Heure à laquelle le bail a expiré |
|
availability_group_lease_expired |
new_timeout |
Délai d’expiration : lorsque availability_group_lease_expired est déclenché, current_time est supérieur à new_timeout |
|
availability_group_lease_expired |
État |
Phases de bail : consultez le tableau Phases de bail ci-dessous |
|
hadr_ag_lease_renewal |
État |
hadr_ag_lease_renewal |
|
hadr_ag_lease_renewal |
error_code |
Si l’état est HadrLeaseRenewal_FailedWithWindowsError, error_code est le code d’erreur Windows associé à l’échec |
Phases de bail et définitionsLe tableau suivant répertorie les phases de bail possibles et explique leurs fonctions :
|
Nom de la phase |
Description |
|---|---|
|
HadrLeaseRenewal_LeaseWorkerStarted |
Le thread de travail de bail a démarré. |
|
HadrLeaseRenewal_StartedExcessLeaseSleep |
Début du bail excédentaire. Les phases de bail excédentaire documentent le début du thread de bail pendant la phase en ligne du groupe de disponibilité. |
|
HadrLeaseRenewal_FailedExcessSleepInvalidOnlineLease |
Nous échouons le bail excédentaire si le bail a déjà expiré. |
|
HadrLeaseRenewal_SkipExcessSleep |
Nous ignorons le bail excédentaire si la durée disponible pour la mise en veille est inférieure à l’intervalle du bail. Il n’est pas nécessaire de passer par le bail excédentaire juste commencer le processus de poignée de main. |
|
HadrLeaseRenewal_ExcessSleepSucceeded |
Le bail excédentaire a réussi. |
|
HadrLeaseRenewal_RenewSucceeded |
Nous devrions voir cela à chaque renouvellement. |
|
HadrLeaseRenewal_LeaseNotValid |
Équivalent de l’erreur : 19419 Windows Server cluster de basculement n’a pas reçu de signal d’événement de processus de SQL Server groupe de disponibilité d’hébergement ' %.*ls' dans le délai d’expiration du bail. |
|
HadrLeaseRenewal_StopLeaseRenewal |
Vous devriez voir cela pendant un événement de basculement. |
|
HadrLeaseRenewal_LeaseExpired |
Équivalent à l’erreur : 19421 SQL Server groupe de disponibilité d’hébergement ' %.*ls' n’a pas reçu de signal d’événement de processus du cluster de basculement Windows Server dans le délai d’expiration du bail. |
|
HadrLeaseRenewal_FailedWithWindowsError |
Le renouvellement du bail a échoué en raison d’une erreur windows. |
Pour plus d’informations, consultez Amélioration des diagnostics du délai d’expiration du bail du groupe de disponibilité AlwaysOn.Pour plus d’informations sur le délai d’expiration du bail, consultez How It Works : SQL Server AlwaysOn Lease Timeout.
État
Microsoft a confirmé l’existence de ce problème dans les produits Microsoft répertoriés dans la section « S’applique à ».