Symptômes
La procédure stockée sp_replmonitorsubscriptionpendingcmds n’est pas compatible avec la réplication P2P (P2P). Elle retourne un nombre incorrect de commandes en attente. Après avoir appliqué ce correctif, sp_replmonitorsubscriptionpendingcmds sera compatible avec la réplication P2P.
Note L’onglet « Commandes non distribuées » d’un moniteur de réplication appelle sp_replmonitorsubscriptionpendingcmds en arrière-plan.
Résolution
Informations sur les mises à jour cumulatives
Ce problème est résolu dans les mises à jour cumulatives suivantes pour SQL Server :
Remarque Après avoir appliqué cette mise à jour cumulative, sp_replmonitorsubscriptionpendingcmds peut toujours signaler un nombre incorrect de commandes en attente pour la réplication P2P si la table MSrepl_originators contient des entrées obsolètes.
Si la table MSrepl_originators contient des entrées obsolètes, l’exécution de sp_replmonitorsubscriptionpendingcmds génère le message d’avertissement suivant dans le journal des erreurs SQL Server :
Avertissement : Impossible d’obtenir la version de la base de données d’abonnement « <database_name> ». Le sp_replmonitorsubscriptionpendingcmdspeut signaler le nombre incorrect de commandes en attente pour la réplication P2P.
Pour résoudre ce problème, supprimez les entrées obsolètes de MSrepl_originators ou transmettez la « dbversion » correcte d’une base de données d’abonnement en tant qu’argument subdb_version lorsque vous exécutez sp_replmonitorsubscriptionpendingcmds.
Conseils : Vous pouvez sélectionner l’une des méthodes suivantes pour rechercher la « dbversion » d’une base de données d’abonnement :
-
Exécutez la requête suivante sur une base de données de distribution : select dbversion from MSrepl_originators
where publisher_database_id = <Publisher_Database_ID>
and srvname = <Subscriber_Server>
and dbname = <Subscriber_Database>
Remarque Vous devez remplacer les valeurs appropriées par <Publisher_Database_ID> , <Subscriber_Server> et <Subscriber_Database>. -
Exécutez la requête suivante sur une base de données d’abonnement : declare @current_version int , @currentGuid uniqueidentifier
select @currentGuid = recovery_fork_guid
from sys.database_recovery_status
where database_id = db_id()
select @current_version = substring(convert(binary(16), isnull(@currentGuid, 0x0)),1,6)
print @current_version
Chaque nouvelle mise à jour cumulative pour SQL Server contient tous les correctifs logiciels et correctifs de sécurité qui se trouvaient dans la build précédente. Nous vous recommandons d’installer la dernière build pour votre version de SQL Server :
État
Microsoft a confirmé l'existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.
Références
Découvrez la terminologie utilisée par Microsoft pour décrire les mises à jour logicielles.