Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Cette rubrique explique comment spécifier différentes propriétés pour votre réplication de fusion.
Téléchargement uniquement
Cette section explique comment spécifier qu’un article de table de fusion est téléchargé uniquement dans SQL Server 2014 à l’aide de SQL Server Management Studio ou de Transact-SQL. Les articles en téléchargement uniquement sont conçus pour des applications où les données ne sont pas mises à jour chez les abonnés. Pour plus d’informations, consultez Optimiser les performances de la réplication de fusion avec les articles en téléchargement seul.
Limitations et restrictions
- Si vous spécifiez qu’un article est téléchargé uniquement après l’initialisation des abonnements, tous les abonnements clients qui ont reçu l’article doivent être réinitialisés. Les abonnements serveur ne doivent pas être réinitialisés. Pour plus d’informations sur les effets des modifications de propriété, consultez Modifier la publication et les propriétés de l’article.
Utilisation de SQL Server Management Studio
Spécifiez qu’un article est téléchargé uniquement sur la page Articles de l’Assistant Nouvelle publication ou sous l’onglet Propriétés de la boîte de dialogue Propriétés de l’article - <Article> . Cette boîte de dialogue est disponible dans l’Assistant Nouvelle publication et dans la boîte de dialogue Propriétés de publication - <Publication> . Pour plus d’informations sur l’utilisation de l’Assistant et sur l’accès à la boîte de dialogue, consultez Créer une publication et Afficher et modifier les propriétés d’une publication.
Pour spécifier qu’un article est téléchargé uniquement sur la page Articles
- Dans la page Articles de l’Assistant Nouvelle publication, sélectionnez un tableau, puis cochez la case Le tableau en surbrillance est uniquement téléchargeable.
Pour spécifier qu’un article est disponible uniquement en téléchargement dans l’onglet Propriétés de la boîte de dialogue Propriétés de l’article - <Article>.
Dans la page Articles de l’Assistant Nouvelle publication ou de la boîte de dialogue Propriétés de publication - <Publication> , sélectionnez un tableau, puis cliquez sur Propriétés de l’article.
Cliquez sur Définir les propriétés de l’article de table en surbrillance ou définir les propriétés de tous les articles de table.
Dans la section Objet de destination de l’onglet Propriétés de la boîte de dialogue Propriétés de l’article - <Article> , spécifiez l’une des valeurs suivantes pour la direction de synchronisation :
- Télécharger pour l'abonné, interdire les modifications par l'abonné
- Télécharger sur l’Abonné, autoriser les modifications apportées à l’Abonné
Si vous êtes dans la boîte de dialogue Propriétés de publication - <Publication> , cliquez sur OK pour enregistrer et fermer la boîte de dialogue.
Utilisation de Transact-SQL
Pour spécifier qu’un nouvel article de table de fusionnement est uniquement téléchargeable.
Exécutez sp_addmergearticle, en spécifiant une valeur de 1 ou 2 pour le paramètre @subscriber_upload_options. Les nombres correspondent au comportement suivant :
0 - Aucune restriction (valeur par défaut). Les modifications apportées à l’Abonné sont téléchargées vers le Publieur.
1 : les modifications sont autorisées chez l’Abonné, mais elles ne sont pas chargées sur l’Éditeur.
2 - Les modifications ne sont pas autorisées pour l’Abonné.
Remarque
Si la table source d’un article est déjà publiée dans une autre publication, la valeur de @subscriber_upload_options doit être la même pour les deux articles.
Pour modifier un article d'une table de fusion existante pour qu'il soit téléchargeable uniquement
Pour déterminer si un article est téléchargé uniquement, exécutez sp_helpmergearticle. Notez la valeur de l'option de téléchargement upload_options de l'article dans le jeu de résultats.
Si la valeur retournée à l’étape 1 est 0, exécutez sp_changemergearticle, en spécifiant une valeur de subscriber_upload_options pour @property, une valeur de 1 pour @force_invalidate_snapshot et @force_reinit_subscription, et une valeur de 1 ou 2 pour @value, ce qui correspond au comportement suivant :
1 - Les modifications sont autorisées sur l’Abonné, mais elles ne sont pas envoyées à l'Éditeur.
2 - Les modifications ne sont pas autorisées au niveau de l’Abonné.
Remarque
Si la table source d’un article est déjà publiée dans une autre publication, le comportement de téléchargement uniquement doit être le même pour les deux articles.
Résolution interactive des conflits
La réplication Microsoft SQL Server fournit un programme de résolution interactif, qui vous permet de résoudre manuellement les conflits lors de la synchronisation à la demande dans le Gestionnaire de synchronisation Microsoft Windows. Une fois la résolution interactive activée, résolvez les conflits de manière interactive pendant la synchronisation, à l’aide du programme de résolution interactif. Le programme de résolution interactif est disponible via le Gestionnaire de synchronisation Microsoft Windows. Pour plus d’informations, consultez Synchroniser un abonnement à l’aide du Gestionnaire de synchronisation Windows (Gestionnaire de synchronisation Windows).
Recommandations
- Si une synchronisation est effectuée en dehors du Gestionnaire de synchronisation Windows (en tant que synchronisation planifiée ou synchronisation à la demande dans SQL Server Management Studio ou moniteur de réplication), les conflits sont résolus automatiquement sans intervention de l’utilisateur, à l’aide de la résolution de conflit par défaut spécifiée pour l’article. Pour plus d’informations, consultez Résolution interactive des conflits.
Utilisation de SQL Server Management Studio
Activer la résolution interactive des conflits pour un article
- Dans la page Articles de l'Assistant Nouvelle publication ou la boîte de dialogue Propriétés de la publication – <Publication>, sélectionnez une table. Pour plus d’informations sur l’utilisation de l’Assistant et sur l’accès à la boîte de dialogue, consultez Créer une publication et Afficher et modifier les propriétés d’une publication.
- Cliquez sur Propriétés de l’article, puis sur Définir les propriétés de l’article de tableau mis en surbrillance ou définir les propriétés de tous les articles de tableau.
- Dans la page Propriétés de l’article - <Article> ou Propriétés de l’article - <ArticleType>, cliquez sur l’onglet Resolver.
- Sélectionnez Autoriser l’Abonné à résoudre les conflits de manière interactive pendant la synchronisation à la demande.
- Cliquez sur OK.
- Si vous êtes dans la boîte de dialogue Propriétés de publication - <Publication> , cliquez sur OK pour enregistrer et fermer la boîte de dialogue.
Pour spécifier qu’un abonnement doit utiliser la résolution interactive des conflits
- Dans la boîte de dialogue Propriétés de l’abonnement - <Abonné> : <SubscriptionDatabase> , spécifiez la valeur True pour l’option Résoudre les conflits de manière interactive . Pour plus d’informations sur l’accès à cette boîte de dialogue, consultez Afficher et modifier les propriétés d’abonnement Pushet Afficher et Modifier les propriétés d’abonnement par extraction.
- Cliquez sur OK.
Utilisation de Transact-SQL
Vous pouvez spécifier par programmation qu’un Abonné utilisera cette interface graphique pour résoudre les conflits d’articles lorsqu’un abonnement par extraction à une publication de fusion est créé. Seuls les conflits dans les articles qui prennent en charge cette option s’affichent dans le programme de résolution interactif.
Créer un abonnement de fusion avec extraction qui utilise le résolveur interactif
Sur le serveur de publication de la base de données de publication, exécutez sp_helpmergearticle, en spécifiant @publication. Notez la valeur de allow_interactive_resolver pour chaque article du jeu de résultats pour lequel le programme de résolution interactif sera utilisé.
- Si cette valeur est 1, le programme de résolution interactif est utilisé.
- Si cette valeur est 0, vous devez d’abord activer le programme de résolution interactif pour chaque article. Pour ce faire, exécutez sp_changemergearticle, en spécifiant @publication, @article, une valeur de allow_interactive_resolver pour @property et une valeur true pour @value.
Au niveau de l’Abonné sur la base de données d’abonnement, exécutez sp_addmergepullsubscription. Pour plus d’informations, consultez Créer un abonnement Pull.
Sur l'abonné de la base de données d’abonnement, exécutez sp_addmergepullsubscription_agent, en spécifiant les paramètres suivants :
- @publisher, @publisher_db (base de données publiée) et @publication.
- Valeur de true pour @enabled_for_syncmgr.
- Valeur true pour @use_interactive_resolver.
- Informations sur le compte de sécurité requises par l’Agent de fusion. Pour plus d’informations, consultez Créer un abonnement Pull.
Sur le serveur de publication dans la base de données de publication, exécutez sp_addmergesubscription.
Définir un article qui prend en charge le programme de résolution interactif
Sur le serveur de publication sur la base de données de publication, exécutez sp_addmergearticle. Spécifiez le nom de la publication à laquelle appartient l’article pour @publication, un nom pour l’article pour @article, l’objet de base de données publié pour @source_object et la valeur true pour @allow_interactive_resolver. Pour plus d’informations, consultez Définir un article.
Spécifier le niveau de suivi et de résolution des conflits
Lorsqu’un abonnement à une publication de fusion est synchronisé, la réplication vérifie les conflits provoqués par les modifications apportées aux mêmes données au niveau du serveur de publication et de l’Abonné. Vous pouvez spécifier si des conflits sont détectés au niveau des lignes, où toute modification apportée à la ligne est considérée comme un conflit, ou au niveau des colonnes, où seules les modifications apportées à la même ligne et colonne sont considérées comme un conflit. La résolution des conflits pour les articles est effectuée à l'échelle des lignes. Pour plus d’informations sur la détection et la résolution des conflits lorsque des enregistrements logiques sont utilisés, consultez Détection et résolution des conflits dans les enregistrements logiques.
Limitations et restrictions
- Si vous modifiez le niveau de suivi après l’initialisation des abonnements, ces abonnements doivent être réinitialisés. Pour plus d’informations sur les effets des modifications de propriété, consultez Modifier la publication et les propriétés de l’article.
- Avec le suivi au niveau des lignes et des colonnes, la résolution des conflits est toujours effectuée au niveau des lignes : la ligne gagnante remplace la ligne perdante. La réplication de fusion vous permet également de spécifier que les conflits doivent être suivis et résolus au niveau de l’enregistrement logique, mais ces options ne sont pas disponibles à partir de SQL Server Management Studio. Pour plus d’informations sur la définition de ces options à partir de procédures stockées de réplication, consultez Définir une relation d’enregistrement logique entre les articles de table de fusion.
Utilisation de SQL Server Management Studio
Spécifiez le suivi au niveau des lignes ou des colonnes pour les articles de fusion dans l’onglet Propriétés de la boîte de dialogue Propriétés des articles, qui est disponible dans l’Assistant Nouvelle publication et la boîte de dialogue Propriétés de publication - <Publication>. Pour plus d’informations sur l’utilisation de l’Assistant et sur l’accès à la boîte de dialogue, consultez Créer une publication et Afficher et modifier les propriétés d’une publication.
Spécifier le suivi au niveau des lignes ou des colonnes
- Dans la page Articles de l'Assistant Nouvelle publication ou la boîte de dialogue Propriétés de la publication – <Publication>, sélectionnez une table.
- Cliquez sur Propriétés de l’article, puis sur Définir les propriétés de l’article de tableau mis en surbrillance ou définir les propriétés de tous les articles de tableau.
- Sous l’onglet Propriétés de la boîte de dialogue Article Propriétés <de l’article> , sélectionnez l’une des valeurs suivantes pour la propriété de niveau suivi : suivi au niveau des lignes ou suivi au niveau des colonnes.
- Si vous êtes dans la boîte de dialogue Propriétés de publication - <Publication> , cliquez sur OK pour enregistrer et fermer la boîte de dialogue.
Utilisation de Transact-SQL
Spécifier les options de suivi des conflits pour un nouvel article de fusion
Dans la base de données de publication sur le serveur de publication, exécutez sp_addmergearticle et spécifiez l’une des valeurs suivantes pour @column_tracking :
- true : utilisez le suivi au niveau des colonnes pour l’article.
- false : utilisez le suivi au niveau des lignes, qui est la valeur par défaut.
Modifier les options de suivi des conflits pour un article de fusion
Pour déterminer les options de suivi des conflits pour un article de fusion, exécutez sp_helpmergearticle. Notez la valeur de l’option column_tracking dans l'ensemble de résultats de l'article. La valeur 1 signifie que le suivi au niveau des colonnes est utilisé et qu’une valeur de 0 signifie que le suivi au niveau des lignes est utilisé.
Sur le serveur de publication sur la base de données de publication, exécutez sp_changemergearticle. Spécifiez une valeur de column_tracking pour @property et l’une des valeurs suivantes pour @value :
- true : utilisez le suivi au niveau des colonnes pour l’article.
- false : utilisez le suivi au niveau des lignes, qui est la valeur par défaut.
Spécifiez une valeur de 1 pour @force_invalidate_snapshot et @force_reinit_subscription.
Suivi des suppressions
Remarque
Cette fonctionnalité sera supprimée dans une prochaine version de Microsoft SQL Server. Évitez d'utiliser cette fonctionnalité dans de nouveaux travaux de développement, et prévoyez de modifier les applications qui utilisent actuellement cette fonctionnalité.
Par défaut, la réplication de fusion synchronise les commandes DELETE entre l’Éditeur et l’Abonné. La réplication de fusion permet de conserver des lignes dans la base de données d'abonnement, même lorsqu'elles ont été supprimées de la publication, et inversement. Vous pouvez spécifier par programmation que les commandes DELETE sont ignorées lors de la création d’un article ou que vous pouvez activer cette fonctionnalité ultérieurement à l’aide de procédures stockées de réplication.
Important
L’activation de cette fonctionnalité entraîne une non-convergence, ce qui signifie que les données présentes sur l’Abonné ne reflètent pas avec précision les données sur le serveur de publication. Vous devez implémenter votre propre mécanisme pour supprimer manuellement les lignes supprimées.
Spécifier que les suppressions doivent être ignorées pour un nouvel article de fusion
Dans la base de données de publication de l'Éditeur, exécutez sp_addmergearticle (Transact-SQL). Spécifiez la valeur de
false@delete_tracking. Pour plus d’informations, consultez Définir un article.Remarque
Si la table source d’un article est déjà publiée dans une autre publication, la valeur de delete_tracking doit être la même pour les deux articles.
Spécifier que les suppressions doivent être ignorées pour un article de fusion existant
Pour déterminer si la compensation des erreurs est activée pour un article, exécutez sp_helpmergearticle (Transact-SQL) et notez la valeur de delete_tracking dans le jeu de résultats. Si cette valeur est 0, les suppressions sont déjà ignorées.
Si la valeur de l’étape 1 est 1, exécutez sp_changemergearticle (Transact-SQL) sur le serveur de publication sur la base de données de publication. Spécifiez une valeur de delete_tracking pour @property et une valeur de
false@value.Remarque
Si la table source d’un article est déjà publiée dans une autre publication, la valeur de delete_tracking doit être la même pour les deux articles.
Ordre de traitement
La réplication de fusion vous permet de spécifier l’ordre dans lequel les articles sont traités par l’Agent de fusion pendant le processus de synchronisation. Vous pouvez attribuer une commande à chaque article par programmation lors de la création d’un article à l’aide de procédures stockées de réplication. Les articles sont traités dans l’ordre de la plus basse à la valeur la plus élevée. Si deux articles ont la même valeur, ils sont traités simultanément. Pour plus d’informations, consultez Spécifier les propriétés de la réplication de fusion.
À compter de Microsoft SQL Server 2005, il est possible de remplacer l’ordre par défaut du traitement des articles pour les publications de fusion. Cela est utile, par exemple, si vous définissez l’intégrité référentielle par le biais de déclencheurs et que ces déclencheurs doivent être déclenchés dans un certain ordre.
Détermination de l’ordre de traitement
Pendant la synchronisation de fusion, les articles sont, par défaut, traités dans l’ordre requis par les dépendances entre les objets, y compris les contraintes d’intégrité référentielle déclarative (DRI) définies sur les tables de base. Le traitement implique l’énumération des modifications apportées à une table, puis l’application de ces modifications. Si aucune DRI n’est présente, mais que les filtres de jointure ou les enregistrements logiques existent entre les articles de table, les articles sont traités dans l’ordre requis par les filtres et les enregistrements logiques. Les articles qui ne sont liés à aucun autre article par le biais de DRI, de filtres de jointure, d’enregistrements logiques ou d’autres dépendances sont traités en fonction du surnom de l’article dans la table système sysmergearticles (Transact-SQL).
Considérez une publication qui inclut les tables SalesOrderHeader et SalesOrderDetail avec une colonne de clé primaire SalesOrderID dans la table SalesOrderHeader et une colonne de clé étrangère correspondante SalesOrderID dans la table SalesOrderDetail . Pendant la synchronisation, la réplication de fusion empêche les violations de clé étrangère en insérant de nouvelles lignes dans SalesOrderHeader avant d’insérer des lignes associées dans SalesOrderDetail. De même, les lignes sont supprimées de SalesOrderDetail avant la suppression de la ligne associée de SalesOrderHeader.
Toutefois, dans certaines applications, l’intégrité référentielle est appliquée par le biais de déclencheurs de base de données ou au niveau de l’application, plutôt que par le biais de DRI. Étant donné la publication décrite ci-dessus, au lieu de DRI, la table SalesOrderDetail peut avoir un déclencheur d’insertion qui garantit que la ligne associée dans la table SalesOrderHeader existe avant d’autoriser une insertion. SalesOrderHeader peut avoir un déclencheur de suppression qui garantit qu’il n’existe aucune ligne associée dans SalesOrderDetail avant d’autoriser une suppression. La réplication de fusion ne prend pas en compte les déclencheurs lors de la détermination de l’ordre de traitement des articles, car elle ne peut pas déterminer le résultat du déclencheur tant qu’il n’a pas été déclenché. De même, la réplication ne peut pas prendre en compte les contraintes définies au niveau de l’application.
Lorsque l’intégrité référentielle est maintenue via des déclencheurs ou au niveau de l’application, vous devez spécifier l’ordre dans lequel les articles doivent être traités. Dans l’exemple avec des déclencheurs, vous devez spécifier que la table SalesOrderHeader doit être traitée avant SalesOrderDetail, car la commande d’articles est basée sur l’ordre d’insertion. La réplication de fusion inverse automatiquement l’ordre des suppressions. La réplication de fusion ne échoue pas sans classement d’article, car l’Agent de fusion continue de traiter des articles si une violation de contrainte se produit ; il retente ensuite toutes les opérations qui ont échoué après que d’autres articles ont été traités. La spécification de l’ordre d’article évite simplement les nouvelles tentatives et le traitement supplémentaire associé. Si vous spécifiez un ordre incorrect (par exemple, un enregistrement détaillé traité avant les enregistrements d’en-tête), la réplication de fusion réessaye de traiter jusqu’à ce qu’elle réussisse.
Nouvel article
Dans la base de données de publication de l'Éditeur, exécutez sp_addmergearticle (Transact-SQL). Spécifiez une valeur entière qui représente l’ordre de traitement de l’article pour @processing_order. Pour plus d’informations, consultez Définir un article.
Remarque
Lors de la création d’articles classés, vous devez laisser des écarts entre les valeurs de l'ordre des articles. Cela facilite la définition de nouvelles valeurs à l’avenir. Par exemple, si vous avez trois articles pour lesquels vous devez spécifier un ordre de traitement fixe, définissez la valeur de @processing_order sur 10, 20 et 30 au lieu de 1, 2 et 3, respectivement.
Article existant
Pour déterminer l’ordre de traitement d’un article, exécutez sp_helpmergearticle (Transact-SQL) et notez la valeur de processing_order dans le jeu de résultats.
Dans la base de données de publication sur le serveur de publication, exécutez sp_changemergearticle (Transact-SQL). Spécifiez une valeur de processing_order pour @property et une valeur entière qui représente l’ordre de traitement pour @value.
Voir aussi
Améliorer les performances de la réplication de fusion avec le suivi conditionnel des suppressions
Détection et résolution des conflits dans les enregistrements logiques
Définir une relation d’enregistrement logique entre des éléments de table de fusion
Détecter et résoudre les conflits de réplication de fusion
Optimiser les performances de réplication de fusion avec des articles Download-Only
Définir un article
Afficher et modifier les propriétés d’un article