KB2648158-FIX : message d’erreur « le processus n’a pas pu s’exécuter » lorsque vous définissez une valeur non nulle dans le paramètre MaxCmdsInTran de l’agent de lecture du journal dans SQL Server 2008 R2 ou SQL Server 2012

S’applique à : Microsoft SQL Server 2008 R2 Service Pack 1

Microsoft distribue les correctifs Microsoft SQL Server 2008 R2 Service Pack 1 (SP1) ou Microsoft SQL Server 2012 dans un fichier téléchargeable. Dans la mesure où les correctifs sont cumulatifs, chaque nouvelle version contient tous les correctifs et toutes les mises à jour de sécurité qui ont été incluses dans l’ancienne version de mise à jour de SQL Server 2008 R2 Service Pack 1 (SP1) ou Microsoft SQL Server 2012.

Symptômes


Prenons l’exemple du scénario suivant :
  • Vous créez au moins deux publications de réplication transactionnelle basées sur une base de données dans Microsoft SQL Server 2008 R2 ou Microsoft SQL Server 2012.
  • Chaque composition comporte au moins un article. Les articles ne se chevauchent pas et chaque article appartient à une seule composition.
  • Vous définissez la propriété @sync_method des publications sur concomitant.
  • Vous définissez la propriété @immediate_sync de la composition sur true.
  • Définissez le paramètre MaxCmdsInTran de l’agent de lecture du journal sur une valeur différente de zéro.
  • Une des publications reçoit de nombreux insertion en une seule transaction.
  • Une fois la transaction validée, l’agent de lecture du journal commence à traiter et fractionne la transaction en fonction du paramètre MaxCmdsInTran .
  • L’agent de capture instantanée sur une autre composition démarre avant la fin de la tâche par l’agent de lecture du journal.
Dans ce scénario, l’agent de lecture du journal échoue et vous recevez le message d’erreur suivant :
Le processus n’a pas pu exécuter « sp_MSadd_replcmds » sur « server\instance ». (Source : MSSQLServer, numéro d’erreur : 1007) Impossible d’insérer une ligne de clé en double dans l’objet’dbo. MSrepl_commands’avec un index unique’ucMSrepl_commands'. (Source : MSSQLServer, numéro d’erreur : 1007)

Résolution


Informations sur les mises à jour cumulatives

SQL Server 2012

Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 1 pour SQL Server 2012. Pour plus d’informations sur ce package de mise à jour cumulative, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2679368 Package de mise à jour cumulative 1 pour SQL Server 2012
Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans l’ancienne version du correctif SQL Server 2012. Microsoft vous recommande d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2692828 Builds SQL Server 2012 publiées après la sortie de SQL Server 2012
Vous devez appliquer un correctif SQL Server 2012 à une installation de SQL Server 2012.

Package de mise à jour cumulative 4 pour SQL Server 2008 R2 SP1

Le correctif de ce problème a été émis pour la première fois dans la mise à jour cumulative 4. Pour plus d’informations sur la façon d’obtenir ce package de mise à jour cumulative pour SQL Server 2008 R2 SP1, cliquez sur le numéro ci-dessous pour consulter l’article de la base de connaissances Microsoft :
2633146 Package de mise à jour cumulative 4 pour SQL Server 2008 R2 SP1
Remarque Dans la mesure où les builds sont cumulatives, chaque nouvelle version du correctif contient tous les correctifs et les correctifs de sécurité inclus dans la version précédente du correctif SQL Server 2008 R2 SP1. Nous vous recommandons d’appliquer la version de correctif la plus récente qui contient ce correctif. Pour plus d'informations, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
2567616 Builds SQL Server 2008 R2 publiées après la sortie de SQL Server 2008 R2 SP1

Solution de contournement


Pour contourner ce problème, appliquez l'une des méthodes suivantes :
  • Ne définissez pas la propriété @sync_method des publications sur « concurrent » et ne définissez pas la propriété @immediate_sync des publications sur « true ».
  • Définissez la valeur du paramètre MaxCmdsInTran sur zéro.

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.