Procédure : implémenter un outil personnalisé de résolution des conflits s'appuyant sur l'architecture COM pour un article de fusion (programmation de la réplication)
L'espace de noms Microsoft.SqlServer.Replication.BusinessLogicSupport implémente une interface qui vous permet d'écrire une logique métier complexe afin de gérer les événements et de résoudre les conflits qui se produisent au cours du processus de synchronisation de la réplication de fusion. Pour plus d'informations, consultez Procédure : implémenter un gestionnaire de logique métier pour un article de fusion (programmation de la réplication). Vous pouvez également écrire votre propre logique métier personnalisée en code natif pour résoudre ces conflits. Cette logique est construite sous la forme d'un composant COM et compilée dans des bibliothèques de liens dynamiques (DLL) à l'aide de produits tels que Microsoft Visual C++. Un outil de résolution des conflits personnalisé basé sur COM doit implémenter l'interface ICustomResolver, qui est conçue spécifiquement pour la résolution des conflits.
Pour créer et enregistrer un outil de résolution des conflits personnalisé basé sur COM
Dans un environnement de création compatible COM, ajoutez des références à la bibliothèque de l'outil de résolution des conflits personnalisé.
Pour un projet Visual C++, utilisez la directive #import pour importer cette bibliothèque dans votre projet.
Créez une classe qui implémente l'interface ICustomResolver.
Implémentez certaines méthodes et propriétés.
Générez le projet de manière à créer le fichier bibliothèque de l'outil de résolution des conflits personnalisé.
Déployez la bibliothèque dans le répertoire contenant l'exécutable de l'agent de fusion (généralement \Microsoft SQL Server\100\COM).
Notes
Un outil de résolution des conflits personnalisé doit être déployé sur l'Abonné pour un abonnement par extraction, sur le serveur de distribution pour un abonnement par émission de données ou sur le serveur Web utilisé avec la synchronisation Web.
Enregistrez la bibliothèque de l'outil de résolution des conflits personnalisé à l'aide de regsvr32.exe à partir du répertoire de déploiement, comme suit :
regsvr32.exe mycustomresolver.dll
Sur le serveur de publication, exécutez sp_enumcustomresolvers (Transact-SQL) pour vérifier que la bibliothèque n'est pas déjà enregistrée en tant qu'outil de résolution des conflits personnalisé.
Pour enregistrer la bibliothèque en tant qu'outil de résolution des conflits personnalisé, exécutez sp_registercustomresolver (Transact-SQL) au niveau du serveur de distribution. Spécifiez le nom convivial de l'objet COM pour @article_resolver, l'ID de la bibliothèque (CLSID) pour @resolver_clsid et affectez la valeur false à @is_dotnet_assembly.
Notes
Lorsque vous n'en avez plus besoin, vous pouvez annuler l'enregistrement d'un outil de résolution des conflits personnalisé à l'aide de sp_unregistercustomresolver (Transact-SQL).
(Facultatif) Sur un cluster, répétez les étapes 5 à 8 pour enregistrer le programme de résolution personnalisé sur tous les nœuds du cluster. Cette procédure est nécessaire pour garantir que le programme de résolution personnalisé sera en mesure de charger correctement le réconciliateur suite à un basculement.
Pour utiliser un outil de résolution des conflits personnalisé avec un nouvel article de table
Sur le serveur de publication, exécutez sp_enumcustomresolvers (Transact-SQL) et notez le nom convivial du programme de résolution souhaité.
Dans la base de données de publication sur le serveur de publication, exécutez sp_addmergearticle (Transact-SQL) pour définir un article. Spécifiez le nom convivial du programme de résolution d'articles obtenu à l'étape 1 pour @article_resolver. Pour plus d'informations, consultez Procédure : définir un article (programmation Transact-SQL de la réplication).
Pour utiliser un outil de résolution des conflits personnalisé avec un article de table existant
Sur le serveur de publication, exécutez sp_enumcustomresolvers (Transact-SQL) et notez le nom convivial du programme de résolution souhaité.
Exécutez sp_changemergearticle (Transact-SQL), en spécifiant @publication, @article, en affectant la valeur article_resolver à @property et le nom convivial du programme de résolution d'articles obtenu à l'étape 1 à @value.