Détection et résolution avancées des conflits de réplication de fusion
Mis à jour : 14 avril 2006
Lorsqu'un serveur de publication et un Abonné sont connectés et que la synchronisation se produit, l'Agent de fusion détecte la présence d'éventuels conflits. Si tel est le cas, l'Agent de fusion utilise un résolveur de conflits (spécifié lorsqu'un article est ajouté à une publication) pour déterminer les données qui doivent être acceptées et propagées aux autres sites. Pour obtenir une liste complète des types de conflits, consultez la section « Types de conflits » de Comment la réplication de fusion détecte et résout les conflits.
Remarque : |
---|
Bien qu'un Abonné se synchronise avec le serveur de publication, des conflits surviennent généralement entre les mises à jour effectuées par différents Abonnés plutôt qu'entre les mises à jour effectuées par l'Abonné et le serveur de publication. |
Le comportement de la détection et de la résolution des conflits est lié aux options suivantes, décrites dans cette rubrique :
- que vous définissiez le suivi au niveau des colonnes, au niveau des lignes ou au niveau des enregistrements logiques,
- que vous définissiez le mécanisme de résolution par défaut basé sur les priorités ou un résolveur d'articles, un résolveur d'articles peut être :
- un gestionnaire de logique métier écrit en code managé,
- un résolveur personnalisé basé sur COM,
- un résolveur personnalisé basé sur COM fourni par Microsoft.
Si le mécanisme de résolution par défaut est utilisé, le comportement est également déterminé par le type d'abonnement utilisé : client ou serveur.
Détection de conflit
Qu'une modification de données soit considérée comme un conflit dépend du type de suivi des conflits défini pour un article :
- si vous sélectionnez le suivi des conflits au niveau des colonnes, il y a conflit si des modifications sont apportées à la même colonne d'une même ligne sur plusieurs nœuds de réplication ;
- si vous sélectionnez le suivi au niveau des lignes, il y a conflit si des modifications sont apportées à des colonnes quelconques d'une même ligne sur plusieurs nœuds de réplication (les colonnes affectées dans les lignes correspondantes ne doivent pas être identiques) ;
- si vous sélectionnez le suivi au niveau des enregistrements logiques, il y a conflit si des modifications sont apportées à des lignes quelconques d'un même enregistrement logique sur plusieurs nœuds de réplication (les colonnes affectées dans les lignes correspondantes ne doivent pas être identiques).
Pour plus d'informations sur le niveau de suivi, consultez la section « Niveau de suivi » des rubriques Comment la réplication de fusion détecte et résout les conflits et Détection et résolution des conflits dans les enregistrements logiques.
Pour spécifier le niveau de suivi et de résolution des conflits d'un article
- Microsoft Management Studio: Procédure : spécifier le suivi des conflits et le niveau de résolution pour les articles de fusion (SQL Server Management Studio)
- Programmation de réplication Transact-SQL : How to: Specify the Conflict Tracking and Resolution Level for Merge Articles (Replication Transact-SQL Programming)
Résolution de conflits
Après la détection d'un conflit, l'Agent de fusion lance le résolveur de conflits sélectionné afin pour déterminer le « vainqueur du conflit ». La ligne gagnante est appliquée au serveur de publication et à l'Abonné tandis que les données de la ligne perdante sont consignées dans une table de conflits. Les conflits sont résolus immédiatement après l'exécution du résolveur, à moins que vous ne choisissiez de les résoudre interactivement.
Types de résolveurs
Dans la réplication de fusion, la résolution des conflits a lieu au niveau de l'article. Pour les publications composées de plusieurs articles, différents résolveurs de conflits peuvent gérer différents articles, sinon un même résolveur de conflits peut gérer un article, plusieurs articles, ou tous les articles d'une publication.
Si vous envisagez d'utiliser le résolveur de conflits par défaut sur la base de priorités, vous n'êtes pas obligé de définir la propriété du résolveur d'un article. Si vous souhaitez utiliser un résolveur d'articles à la place du résolveur par défaut, vous devez définir la propriété du résolveur pour l'article qui va l'utiliser (en sélectionnant un résolveur disponible sur le serveur de publication). Toutes les informations spécifiques qui doivent être transmises au résolveur peuvent également être spécifiées dans la propriété du résolveur.
La réplication de fusion propose quatre types de résolveurs de conflits :
- Le résolveur des conflits par défaut basé sur les priorités
Le mécanisme de résolution par défaut se comporte différemment selon qu'un abonnement est de type client ou serveur. Vous attribuez des valeurs de priorités à des Abonnés individuels qui utilisent des abonnements serveur ; les modifications apportées au nœud ayant la priorité la plus élevée gagnent les conflits. Pour les abonnements client, c'est la première modification écrite sur le serveur de publication qui gagne le conflit. Pour plus d'informations sur les types d'abonnement, consultez la section « Types d'abonnement » de la rubrique Comment la réplication de fusion détecte et résout les conflits.
Il n'est plus possible de modifier le type d'un abonnement une fois celui-ci créé. - Un Gestionnaire de logique métier
La structure du gestionnaire de logique métier permet d'écrire un assembly de code managé qui est appelé pendant le processus de synchronisation de fusion. Cet assembly inclut une logique de gestion capable de répondre aux conflits et à un certain nombre d'autres conditions pendant la synchronisation. Pour plus d'informations, consultez Exécution de la logique métier lors de la synchronisation de fusion. - Un résolveur personnalisé basé sur COM
La réplication de fusion fournit une API permettant d'écrire des résolveurs en tant qu'objets COM dans des langages tels que Microsoft Visual C++ ou Microsoft Visual Basic. Pour plus d'informations, consultez Résolveurs personnalisés COM. - Un résolveur personnalisé basé sur COM fourni par Microsoft
Microsoft SQL Server 2005 inclut plusieurs résolveurs basés sur COM. Pour plus d'informations, consultez Outils de résolution COM Microsoft.
Pour plus d'informations sur le choix du type de résolveur approprié, consultez Choix d'un résolveur.
Remarque : |
---|
Certains résolveurs d'articles sont écrits pour gérer les conflits de certaines opérations bien précises. Un résolveur peut ainsi traiter les mises à jour, mais pas les insertions ni les suppressions. Le résolveur de conflits par défaut basé sur les priorités traite tous les conflits non traités par le résolveur d'articles. |
Pour spécifier un type d'abonnement de fusion et une priorité pour la résolution des conflits
- SQL Server Management Studio: Procédure : spécifier un type d'abonnement de fusion et une priorité pour la résolution des conflits (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : Procédure : créer un abonnement par extraction de données (programmation Transact-SQL de réplication) et Procédure : créer un abonnement par envoi de données (programmation Transact-SQL de réplication)
- Programmation RMO (Replication Management Objects) : Procédure : créer un abonnement par extraction de données (pull) (programmation RMO) et Procédure : créer un abonnement par envoi de données (programmation RMO)
Résolveur interactif
La réplication fournit une interface utilisateur du Résolveur interactif, exploitable en association avec le résolveur de conflits par défaut basé sur les priorités ou avec un résolveur d'articles. Lors d'une synchronisation à la demande via le Gestionnaire de synchronisation Microsoft Windows, le Résolveur interactif affiche les données conflictuelles durant l'exécution et vous permet de choisir le moyen de résoudre les conflits. Pour plus d'informations sur la manière d'activer la résolution interactive et de démarrer le Résolveur interactif, consultez Résolution interactive des conflits.
Affichage des conflits
Le moyen le plus direct d'afficher les conflits consiste à utiliser l'Outil de résolution des conflits de réplication, disponible à partir de SQL Server Management Studio (SQL Server fournit également les procédures stockées qui permettent l'interrogation des tables conflictuelles). L'Outil de résolution des conflits et le Résolveur interactif sont des outils similaires, mais le second permet de résoudre des conflits au moment de la synchronisation tandis que le premier affiche les conflits après leur résolution. Si les métadonnées en conflit sont toujours disponibles dans les tables système (les métadonnées en conflit sont conservées par défaut pendant 14 jours), vous pouvez supplanter les résultats de la résolution des conflits dans l'Outil de résolution des conflits ; si, en revanche, une intervention directe est régulièrement demandée, pensez à utiliser le Résolveur interactif.
Remarque : |
---|
Les conflits qui impliquent des enregistrements logiques ne s'affichent pas dans l'outil de résolution des conflits. Pour afficher des informations sur ces conflits, utilisez les procédures stockées de réplication. Pour plus d'informations, consultez How to: View Conflict Information for Merge Publications (Replication Transact-SQL Programming). |
L'Outil de résolution des conflits affiche des informations issues de trois tables système :
- La réplication crée une table de conflits pour chaque table d'un article de fusion, dont le nom se présente sous la forme MSmerge_conflict_<PublicationName>_<ArticleName>.
Les tables de conflits possèdent la même structure que les tables sur lesquelles elles sont basées. Une ligne de l'une de ces tables se compose de la version perdante d'une ligne conflictuelle (la version gagnante de la ligne réside dans la table utilisateur réelle). - La table MSmerge_conflicts_info fournit des informations sur chaque conflit, notamment le type de conflit.
- La table sysmergearticles identifie les tables utilisateur comportant des tables de conflits, puis fournit des informations sur ces tables de conflits.
Par défaut, les informations de conflit sont stockées :
- sur le serveur de publication et sur l'Abonné si le niveau de compatibilité de la publication est 90RTM ou supérieur. Pour plus d'informations sur le niveau de compatibilité, consultez la section « Niveau de compatibilité des publications de fusion » dans la rubrique Utilisation de plusieurs versions de SQL Server dans une topologie de réplication. ;
- sur le serveur de publication si le niveau de compatibilité de la publication est inférieur à 90RTM ;
- Sur le serveur de publication si les Abonnées exécutent SQL Server 2005 Compact Edition. Les données conflictuelles ne peuvent pas être stockées sur les Abonnés SQL Server 2005 Compact Edition.
Pour afficher les conflits
- SQL Server Management Studio: Procédure : afficher et résoudre les conflits de données pour les publications de fusion (SQL Server Management Studio)
- Programmation Transact-SQL de la réplication : How to: View Conflict Information for Merge Publications (Replication Transact-SQL Programming)
Voir aussi
Concepts
Fonctionnalités avancées de la réplication de fusion
Synchronisation des données