FIX: L'opération de synchronisation d'une réplication de fusion fois dans Microsoft SQL Server 2005

S’applique à : Microsoft SQL Server 2005 Standard EditionMicrosoft SQL Server 2005 Developer EditionMicrosoft SQL Server 2005 Enterprise Edition

Bug : 50002786 (SQL Hotfix)
Microsoft distribue Microsoft SQL Server 2005 correctifs comme un fichier téléchargeable. Étant donné que les correctifs sont cumulatifs, chaque nouvelle version contient toutes les corrections à chaud et toutes les corrections de sécurité qui ont été incluses avec la version précédente de correctif sqL Server 2005.

Symptômes


Considérez le scénario suivant. Dans Microsoft SQL Server 2005, vous configurez une réplication de fusion. Ensuite, vous déployez l'instantané à un abonné. Dans ce scénario, lorsque vous exécutez l'agent de fusion pour synchroniser les données, l'opération s'éteint lorsque l'agent de fusion appelle la procédure sp_MSmakegeneration stockée. En outre, lorsque vous exécutez l'instruction suivante par rapport à la base de données répliquée de l'abonné après la date d'exécution, la requête renvoie certains enregistrements qui sont sensibles au problème :
select * from dbo.MSmerge_genhistory gh where not exists       (select * from dbo.MSmerge_contents as mc       where mc.generation = gh.generation)and not exists      (select * from dbo.MSmerge_tombstone as ts       where ts.generation = gh.generation)and genstatus = 0union select * from dbo.MSmerge_genhistory gh where exists       (select * from dbo.MSmerge_contents as mc      where mc.generation = gh.generation      and mc.tablenick <> gh.art_nick)or exists      (select * from dbo.MSmerge_tombstone as ts      where ts.generation = gh.generation      and ts.tablenick <> gh.art_nick)and genstatus = 0

Cause


Ce problème se produit parce qu'il y a une rangée dans le tableau MSmerge_genhistory qui répond à l'une des conditions suivantes :
  • La génération n'a pas de modifications qui lui sont cartographiées dans le tableau MSmerge_tombstone ou dans le tableau MSmerge_contents.
  • Une ou plusieurs lignes qui sont cartographiées à la génération ont une valeur incorrecte dans la colonne de feuillet dans la table MSmerge_tombstone ou dans la table MSmerge_contents.
Cette situation fait entrer la procédure sp_MSmakegeneration stockée dans une boucle infinie.

Résolution


Le correctif pour ce problème a d'abord été publié dans la mise à jour cumulative 8. Pour plus d'informations sur la façon d'obtenir ce paquet de mise à jour cumulative pour SQL Server 2005 Service Pack 2, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft:
951217 Paquet de mise à jour cumulative 8 pour SQL Server 2005 Service Pack 2
Remarque Étant donné que les builds sont cumulatifs, chaque nouvelle version de correctif contient toutes les corrections à chaud et toutes les corrections de sécurité qui ont été incluses avec la version précédente de correctif s.r. SQL Server 2005. Microsoft vous recommande d'envisager d'appliquer la version de correctif la plus récente qui contient ce hotfix. Pour plus d'informations, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft :
937137 Le serveur SQL 2005 construit qui ont été libérés après SQL Server 2005 Service Pack 2 a été libéré
Microsoft SQL Server 2005 hotfixes sont créés pour des packs de service SQL Server spécifiques. Vous devez appliquer un hotfix SQL Server 2005 Service Pack 2 à une installation de SQL Server 2005 Service Pack 2. Par défaut, tout correctif chaud fourni dans un pack de service SQL Server est inclus dans le prochain pack de service SQL Server.

Solution de contournement


Pour contourner cette question, suivez les étapes suivantes :
  1. Annuler l'opération de synchronisation qui n'est pas terminée.
  2. Exécutez les énoncés suivants pour obtenir le paramètre generation_leveling_threshold pour la publication :
    use <Publication Database Name>goexec sp_helpmergepublication @publication = '<Publication Name>'
    Notez la valeur du paramètre generation_leveling_threshold.
  3. Exécutez les énoncés suivants pour désactiver le nivellement des générations et la mise en coalescing des générations :
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = 0
  4. Synchroniser les données pour la publication.
  5. Une fois la synchronisation terminée avec succès, réinitialiser le generation_leveling_threshold la mise en arrière à la valeur que vous avez notée à l'étape 2. Pour ce faire, exécutez les instructions suivantes :
    use <Publication Database Name>exec sp_changemergepublication @publication = '<Publication Name>', @property = 'generation_leveling_threshold', @value = <Value>
Après avoir utilisé cette méthode pour contourner ce problème, ce problème se produira à nouveau si un autre abonné tente de traiter la génération. Vous devez répéter ces étapes pour tous les abonnés qui rencontrent le problème.

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.

Informations supplémentaires


Pour plus d'informations sur les fichiers modifiés, et pour des informations sur les conditions préalables à l'application du paquet de mise à jour cumulative qui contient le hotfix qui est décrit dans cet article Microsoft Knowledge Base, cliquez sur le numéro d'article suivant pour afficher le article dans la base de connaissances Microsoft:
951217 Paquet de mise à jour cumulative 8 pour SQL Server 2005 Service Pack 2

Références


Pour plus d'informations sur la liste des builds disponibles après SQL Server Service Pack 2, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft:
937137 Le serveur SQL 2005 construit qui ont été libérés après SQL Server 2005 Service Pack 2 a été libéré
Pour plus d'informations sur le modèle de service incrémental pour SQL Server, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft :
935897 Un modèle d'entretien incrémental est disponible auprès de l'équipe de SQL Server pour fournir des correctifs à chaud pour les problèmes signalés
Pour plus d'informations sur la façon d'obtenir SQL Server 2005 Service Pack 2, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft:
913089 Comment obtenir le dernier pack de service pour SQL Server 2005
Pour plus d'informations sur les nouvelles fonctionnalités et les améliorations apportées au pack de service 2 de SQL Server 2005, visitez le site Web Microsoft suivant :Pour plus d'informations sur le schéma de nommage pour les mises à jour SQL Server, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft:
822499 Nouveau schéma de dénomination pour les paquets de mise à jour logicielle Microsoft SQL Server
Pour plus d'informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro d'article suivant pour voir l'article dans la base de connaissances Microsoft :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft