Symptômes
Supposons que vous utilisez la réplication de fusion dans Microsoft SQL Server 2012 ou Microsoft SQL Server 2014. Dans le cadre du processus de synchronisation, l’agent de fusion effectue une nouvelle génération dans une session. Si, pour une raison quelconque, telle qu’un interblocage ou un délai d’attente, la transaction de création de génération est sélectionnée comme victime d’interblocage et que la transaction est annulée, il peut y avoir une grande chaîne de blocage pour MSinternal_makegeneration_inprog verrou d’application dans la création de génération suivante, et la session mentionnée précédemment s’affiche en tant que bloqueur d’en-tête.
Cause
Le verrou d’application utilisé pour sécuriser un processus de création de génération est un verrou d’application au niveau de la session. Lorsqu’un interblocage est détecté pendant le processus de création de génération, seule la transaction est restaurée mais la session n’est pas fermée. Pour libérer un verrou d’application au niveau de la session, la session doit se déconnecter. Par conséquent, en raison de la conception de la logique des nouvelles tentatives (la session ne sera pas fermée pendant l’échec de la génération dans la réplication de fusion), si la création de la première génération échoue avec un interblocage, le verrou de session (MSinternal_makegeneration_inprog) qu’elle a obtenu ne sera pas libéré lors de la restauration de la transaction. Cela provoque le blocage de la chaîne des demandes de verrouillage dans le processus de création de génération à venir. Le bloqueur d’en-tête est affiché comme étant la première génération de demande qui échoue avec un interblocage.
Avant le correctif, SQL Server efface uniquement le verrou pour un processus de génération réussi. Elle laisse un verrou d’application de session orpheline avant la fermeture de session en cas de blocage.
Résolution
Ce problème a été résolu pour la première fois dans la mise à jour cumulative suivante de SQL Server.
Mise à jour cumulative 5 pour SQL Server 2014 /en-us/help/3011055
Mise à jour cumulative 3 pour SQL Server 2012 SP2 /en-us/help/3002049
À propos des mises à jour cumulatives pour SQL Server
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et tous les correctifs de sécurité inclus dans la mise à jour cumulative précédente. Consultez les dernières mises à jour cumulatives pour SQL Server :
- Dernière mise à jour cumulative pour SQL Server 2014
- Dernière mise à jour cumulative pour SQL Server 2012 SP2
État
Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».