KB3011807 - CORRECTIF : Une grande chaîne de blocage se produit lorsque vous utilisez la réplication de fusion dans SQL Server 2012 ou dans SQL Server 2014

S’applique à
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

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 :

      

État

Microsoft a confirmé qu’il s’agissait d’un problème dans les produits Microsoft répertoriés dans la section « S’applique à ».