Créer un abonnement pouvant être mis à jour à une publication transactionnelle (Management Studio)

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é.

La réplication transactionnelle permet aux modifications apportées à un abonné d'être propagées de retour vers le serveur de publication en utilisant des abonnements de mise à jour soit immédiats, soit mis en file d'attente. Vous pouvez créer automatiquement un abonnement de mise à jour à l’aide de procédures stockées de réplication.

Configurez les abonnements pouvant être mis à jour sur la page Abonnements pouvant être mis à jour de l'Assistant Nouvel abonnement. Cette page est disponible uniquement si vous avez activé une publication transactionnelle pour les abonnements pouvant être mis à jour. Pour plus d’informations sur l’activation des abonnements pouvant être mis à jour, consultez Activer la mise à jour des abonnements pour les publications transactionnelles.

Configurer un abonnement pouvant être mis à jour à partir du serveur de publication

  1. Connectez-vous au serveur de publication dans Microsoft SQL Server Management Studio, puis développez le nœud du serveur.

  2. Développez le dossier Réplication , puis développez le dossier Publications locales .

  3. Cliquez avec le bouton droit sur une publication transactionnelle activée pour mettre à jour les abonnements, puis cliquez sur Nouveaux abonnements.

  4. Suivez les pages de l’Assistant pour spécifier les options de l’abonnement, comme le lieu où l'Agent de distribution doit fonctionner.

  5. Dans la page Abonnements pouvant être mis à jour de l’Assistant Nouvel abonnement, vérifiez que la réplication est sélectionnée.

  6. Sélectionnez une option dans la liste déroulante Valider dans Publisher :

    • Pour utiliser des abonnements de mise à jour immédiate, sélectionnez Valider simultanément les modifications. Si vous sélectionnez cette option et que la publication autorise les abonnements mis à jour en file d’attente (la valeur par défaut pour les publications créées avec l’Assistant Nouvelle publication), la propriété d’abonnement update_mode est définie sur le basculement. Ce mode vous permet de passer à la mise à jour mise à jour mise en file d’attente ultérieurement si nécessaire.
    • Pour utiliser les abonnements mis à jour en file d’attente, sélectionnez Modifications de file d’attente et validation lorsque cela est possible. Si vous sélectionnez cette option et que la publication autorise la mise à jour immédiate des abonnements (la valeur par défaut pour les publications créées avec l’Assistant Nouvelle publication) et que l’Abonné exécute SQL Server 2005 ou une version ultérieure, la propriété d’abonnement update_mode est définie sur le basculement en file d’attente. Ce mode vous permet de passer à la mise à jour immédiate ultérieurement si nécessaire.

    Pour plus d’informations sur le basculement des modes de mise à jour, consultez Basculer entre les modes de mise à jour pour un abonnement transactionnel pouvant être mis à jour.

  7. La page Connexion pour abonnements pouvant être mis à jour est affichée pour les abonnements qui utilisent une mise à jour immédiate ou qui ont update_mode défini sur le basculement mis en file d’attente. Dans la page Connexion pour les abonnements pouvant être mis à jour, spécifiez un serveur lié sur lequel les connexions au serveur de publication sont effectuées pour la mise à jour immédiate des abonnements. Les connexions sont utilisées par les déclencheurs qui se déclenchent sur l'Abonné et propagent les modifications à l'Éditeur. Sélectionnez l’une des options suivantes :

    • Créez un serveur lié qui se connecte à l’aide de l’authentification SQL Server. Sélectionnez cette option si vous n’avez pas défini de serveur distant ou de serveur lié entre l’Abonné et le serveur de publication. La réplication crée un serveur lié pour vous. Le compte que vous spécifiez doit déjà exister sur le serveur de publication.
    • Utilisez un serveur lié ou un serveur distant que vous avez déjà défini. Sélectionnez cette option si vous avez défini un serveur distant ou un serveur lié entre l’Abonné et le serveur de publication à l’aide de sp_addserver (Transact-SQL), de sp_addlinkedserver (Transact-SQL), de SQL Server Management Studio ou d’une autre méthode.

    Pour plus d’informations sur les autorisations requises par le compte de serveur lié, consultez les Abonnements à mise à jour en file d'attente de enter link description here.

  8. Terminez l'Assistant.

Configurer un abonnement pouvant être mis à jour à partir de l’Abonné

  1. Connectez-vous à l’Abonné dans SQL Server Management Studio, puis développez le nœud du serveur.

  2. Affichez le dossier Répliquer.

  3. Cliquez avec le bouton droit sur le dossier Abonnements locaux , puis cliquez sur Nouveaux abonnements.

  4. Sur la page Publication de l’Assistant Nouvel abonnement, sélectionnez Rechercher serveur de publication SQL Server dans la liste déroulante Serveur de publication.

  5. Connectez-vous au serveur de publication dans la boîte de dialogue Se connecter au serveur .

  6. Sélectionnez une publication transactionnelle activée pour la mise à jour des abonnements sur la page Publication .

  7. Suivez les pages de l’Assistant pour spécifier les options de l’abonnement, telles que l’emplacement d’exécution de l’Agent de distribution.

  8. Dans la page Abonnements pouvant être mis à jour de l’Assistant Nouvel abonnement, vérifiez que la réplication est sélectionnée.

  9. Sélectionnez une option dans la liste déroulante Valider dans Publisher :

    • Pour utiliser des abonnements de mise à jour immédiate, sélectionnez Valider simultanément les modifications. Si vous sélectionnez cette option et que la publication autorise les abonnements capables de mise à jour en file d'attente (la valeur par défaut pour les publications créées avec l’Assistant Nouvelle publication), la propriété d’abonnement update_mode est définie sur failover. Ce mode vous permet de passer à la mise à jour en file d'attente ultérieurement si nécessaire.
    • Pour utiliser les abonnements mis à jour en file d’attente, sélectionnez Modifications de file d’attente et validation lorsque cela est possible. Si vous sélectionnez cette option et que la publication autorise des abonnements avec mise à jour immédiate (la valeur par défaut pour les publications créées avec l’Assistant Nouvelle publication) et que l’Abonné exécute SQL Server 2005 ou une version ultérieure, la propriété d’abonnement update_mode est définie sur queued failover. Ce mode vous permet de passer à la mise à jour immédiate ultérieurement si nécessaire.

    Pour plus d’informations sur le basculement des modes de mise à jour, consultez Basculer entre les modes de mise à jour pour un abonnement transactionnel pouvant être mis à jour.

  10. La page Connexion pour les abonnements pouvant être mis à jour est affichée pour les abonnements qui utilisent la mise à jour immédiate ou dont le update_mode est défini sur mise en file d'attente pour le basculement. Dans la page Connexion pour les abonnements pouvant être mis à jour, spécifiez un serveur lié sur lequel les connexions au serveur de publication sont effectuées pour la mise à jour immédiate des abonnements. Les connexions sont utilisées par les déclencheurs qui se déclenchent sur l'Abonné et propagent les modifications à l'Éditeur. Sélectionnez l’une des options suivantes :

    • Créez un serveur lié qui se connecte à l’aide de l’authentification SQL Server. Sélectionnez cette option si vous n’avez pas défini de serveur distant ou de serveur lié entre l’Abonné et le serveur de publication. La réplication crée un serveur lié pour vous. Le compte que vous spécifiez doit déjà exister sur le serveur de publication.
    • Utilisez un serveur lié ou un serveur distant que vous avez déjà défini. Sélectionnez cette option si vous avez défini un serveur distant ou un serveur lié entre l’Abonné et le serveur de publication à l’aide de sp_addserver (Transact-SQL), de sp_addlinkedserver (Transact-SQL), de SQL Server Management Studio ou d’une autre méthode.

    Pour plus d’informations sur les autorisations requises par le compte de serveur lié, consultez les abonnements à mise à jour en file d’attente de entrez la description du lien ici.

  11. Terminez l'Assistant.

Créer un abonnement de type 'pull' avec mise à jour immédiate

  1. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements à mise à jour immédiate en exécutant sp_helppublication.

    • Si la valeur de l'ensemble de allow_sync_tran résultats est 1, la publication prend en charge les abonnements de mise à jour instantanée.
    • Si la valeur dans l'ensemble de résultats allow_sync_tran est définie par 0, la publication doit être recréée avec les abonnements de mise à jour immédiate activés.
  2. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements par extraction en exécutant sp_helppublication.

    • Si la valeur de allow_pull dans le jeu de résultats est 1, la publication prend en charge les abonnements par extraction.
    • Si la valeur de allow_pull est 0, exécutez sp_changepublication, en spécifiant allow_pull pour @property et true pour @value.
  3. Sur l’Abonné, exécutez sp_addpullsubscription. Spécifiez @publisher et @publication, et l’une des valeurs suivantes pour @update_mode:

    • sync tran - active l’abonnement pour la mise à jour immédiate.
    • failover - active l’abonnement pour la mise à jour immédiate avec mise à jour en file d’attente en tant qu’option de basculement.

    Remarque

failover exige que la publication soit également activée pour les abonnements de mise à jour en file d’attente.

  1. Sur l’Abonné, exécutez sp_addpullsubscription_agent. Spécifiez les éléments suivants :

    • Les paramètres @publisher, @publisher_db, et @publication.
    • Informations d’identification Microsoft Windows sous lesquelles l’Agent de distribution fonctionne sur l’ordinateur abonné pour @job_login et @job_password.

    Remarque

Les connexions effectuées à l’aide de l’authentification intégrée Windows sont toujours effectuées à l’aide des informations d’identification Windows spécifiées par @job_login et @job_password. L’Agent de distribution établit toujours la connexion locale à l’Abonné à l’aide de l’authentification intégrée Windows. Par défaut, l’agent se connecte au serveur de distribution à l’aide de l’authentification intégrée Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the Microsoft SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription. 
  1. Exécutez sp_link_publication sur l’abonné dans la base de données d’abonnement. Spécifiez @publisher, , @publicationle nom de la base de données de publication pour @publisher_db, et l’une des valeurs suivantes pour @security_mode:

    • 0 - Utilisez l’authentification SQL Server lors de la mise à jour sur le serveur de publication. Cette option vous demande d'indiquer un identifiant valide chez l'éditeur pour @login et @password.
    • 1 - Utilisez le contexte de sécurité de l’utilisateur qui apporte des modifications sur l’Abonné lors de la connexion au serveur de publication. Consultez sp_link_publication pour connaître les restrictions relatives à ce mode de sécurité.
    • 2 - Utilisez une connexion de serveur lié définie par l’utilisateur existante créée avec sp_addlinkedserver.
  2. Sur le serveur de publication, exécutez la commande sp_addsubscription en spécifiant @publication, @subscriber, @destination_db, en définissant "pull" comme type d'abonnement pour @subscription_type, et en utilisant la même valeur que celle spécifiée à l'étape 3 pour @update_mode.

Cela enregistre l'abonnement par extraction chez l'Editeur.

Créer un abonnement push de mise à jour immédiate

  1. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements à mise à jour immédiate en exécutant sp_helppublication.

    • Si la valeur de allow_sync_tran dans le jeu de résultats est 1, la publication prend en charge les abonnements à mise à jour immédiate.
    • Si la valeur de allow_sync_tran dans le jeu de résultats est 0, la publication doit être recréée avec l'activation des abonnements de mise à jour immédiate.
  2. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements Push en exécutant sp_helppublication.

    • Si la valeur de allow_push dans le jeu de résultats est 1, la publication prend en charge les abonnements de type push.
    • Si la valeur est allow_push0, exécutez sp_changepublication, en spécifiant allow_push et @propertytrue pour @value.
  3. Sur le serveur de publication, exécutez sp_addsubscription. Spécifiez @publication, @subscriber, @destination_dbet l’une des valeurs suivantes pour @update_mode:

    • sync tran - active la prise en charge de la mise à jour immédiate.
    • failover : permet de prendre en charge la mise à jour immédiate, avec la mise à jour en file d'attente comme option de basculement.

    Remarque

failover exige que la publication soit également activée pour les abonnements de mise à jour en file d’attente.

  1. Sur le serveur de publication, exécutez sp_addpushsubscription_agent. Spécifiez les paramètres suivants :

    • @subscriber, @subscriber_dbet @publication.
    • Informations d’identification Windows sous lesquelles l’Agent de distribution s’exécute au niveau du distributeur pour @job_login et @job_password.

    Remarque

Les connexions effectuées à l’aide de l’authentification intégrée Windows sont toujours effectuées à l’aide des informations d’identification Windows spécifiées par @job_login et @job_password. L’Agent de distribution établit toujours la connexion locale au serveur de distribution à l’aide de l’authentification intégrée Windows. Par défaut, l’agent se connecte à l’Abonné à l’aide de l’authentification intégrée Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.
  1. Sur l’Abonné sur la base de données d’abonnement, exécutez sp_link_publication. Spécifiez @publisher, , @publicationle nom de la base de données de publication pour @publisher_db, et l’une des valeurs suivantes pour @security_mode:

    • 0 - Utilisez l’authentification SQL Server lors de la mise à jour sur le serveur de publication. Cette option vous oblige à spécifier une connexion valide sur le serveur de publication pour @login et @password.
    • 1 - Utilisez le contexte de sécurité de l’utilisateur qui apporte des modifications sur l’Abonné lors de la connexion au serveur de publication. Consultez sp_link_publication pour connaître les restrictions relatives à ce mode de sécurité.
    • 2 - Utilisez une connexion de serveur lié définie par l’utilisateur existante créée en utilisant sp_addlinkedserver.

Créer un abonnement de type pull avec mise à jour en file d'attente

  1. Sur le serveur de publication, vérifiez que la publication soutient les abonnements en mise à jour différée en exécutant sp_helppublication.

    • Si la valeur dans le jeu de résultats allow_queued_tran est 1, la publication prend en charge les abonnements de mise à jour immédiate.
    • Si la valeur de l'ensemble de résultats allow_queued_tran est 0, la publication doit être recréée avec les abonnements avec mise à jour en file d'attente activée.
  2. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements de type 'pull' en exécutant sp_helppublication.

    • Si la valeur de allow_pull dans le jeu de résultats est 1, la publication prend en charge les abonnements tirés.
    • Si la valeur de allow_pull est 0, exécutez sp_changepublication, en spécifiant allow_pull pour @property et true pour @value.
  3. Sur l’Abonné, exécutez sp_addpullsubscription. Spécifiez @publisher et @publication, et l’une des valeurs suivantes pour @update_mode:

    • queued tran : active l’abonnement pour la mise à jour en file d’attente.
    • queued failover - permet de prendre en charge la mise à jour en file d’attente avec la mise à jour immédiate comme option de basculement.

    Remarque

queued failover exige que la publication soit également activée pour la mise à jour immédiate des abonnements. Pour basculer vers la mise à jour immédiate, vous devez utiliser sp_link_publication pour définir les informations d’identification sous lesquelles les modifications apportées à l’Abonné sont répliquées sur le serveur de publication.

  1. Sur l’Abonné, exécutez sp_addpullsubscription_agent. Spécifiez les paramètres suivants :

    • @publisher, @publisher_dbet @publication.
    • Les informations d’identification Windows sous lesquelles l’Agent de distribution fonctionne sur l’Abonné pour @job_login et @job_password.

    Remarque

Les connexions effectuées à l’aide de l’authentification intégrée Windows sont toujours effectuées à l’aide des informations d’identification Windows spécifiées par @job_login et @job_password. L’Agent de distribution établit toujours la connexion locale à l’Abonné à l’aide de l’authentification intégrée Windows. Par défaut, l’agent se connecte au serveur de distribution à l’aide de l’authentification intégrée Windows.

* (Optional) A value of `0` for `@distributor_security_mode` and the SQL Server login information for `@distributor_login` and `@distributor_password`, if you need to use SQL Server Authentication when connecting to the Distributor. 
* A schedule for the Distribution Agent job for this subscription.
  1. Sur le serveur de publication, exécutez sp_addsubscriber pour enregistrer l'Abonné auprès du serveur de publication, en spécifiant @publication, @subscriber, @destination_db, une valeur de pull pour @subscription_type, et la même valeur indiquée à l'étape 3 pour @update_mode.

Cela enregistre l'abonnement par extraction à l'éditeur.

Pour créer un abonnement push de mise à jour en file d'attente

  1. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements à mise à jour en file d’attente en exécutant sp_helppublication.

    • Si la valeur de allow_queued_tran dans le jeu de résultats est 1, la publication prend en charge les abonnements à mise à jour immédiate.
    • Si la valeur de allow_queued_tran dans le jeu de résultats est 0, la publication doit être recréée avec les abonnements de mise à jour en file d’attente activés. Pour plus d’informations, consultez Guide pratique pour activer la mise à jour des abonnements pour les publications transactionnelles (programmation Transact-SQL de réplication).
  2. Sur le serveur de publication, vérifiez que la publication prend en charge les abonnements Push en exécutant sp_helppublication.

    • Si la valeur dans le jeu de résultats allow_push est 1, la publication prend en charge les abonnements push.
    • Si la valeur de allow_push est 0, exécutez sp_changepublication, en spécifiant allow_push pour @property et true pour @value.
  3. Sur le serveur de publication, exécutez sp_addsubscription. Spécifiez @publication, @subscriber, @destination_dbet l’une des valeurs suivantes pour @update_mode:

    • queued tran : active l’abonnement pour la mise à jour en file d’attente.
    • queued failover : permet la prise en charge de la mise à jour en file d’attente avec la mise à jour immédiate en tant qu’option de basculement.

    Remarque

L’option de basculement en file d’attente nécessite que la publication soit également activée pour les abonnements de mise à jour immédiate. Pour basculer vers la mise à jour immédiate, vous devez utiliser sp_link_publication pour définir les informations d’identification sous lesquelles les modifications apportées à l’Abonné sont répliquées sur le serveur de publication.

  1. Sur le serveur de publication, exécutez sp_addpushsubscription_agent. Spécifiez les paramètres suivants :

    • @subscriber, @subscriber_dbet @publication.
    • Les informations d’identification Windows sous lesquelles l’Agent de distribution s’exécute pour le serveur de distribution @job_login et @job_password.

    Remarque

Les connexions effectuées à l’aide de l’authentification intégrée Windows sont toujours effectuées à l’aide des informations d’identification Windows spécifiées par @job_login et @job_password. L’Agent de distribution établit toujours la connexion locale au serveur de distribution à l’aide de l’authentification intégrée Windows. Par défaut, l’agent se connecte à l’Abonné à l’aide de l’authentification intégrée Windows.

* (Optional) A value of `0` for `@subscriber_security_mode` and the SQL Server login information for `@subscriber_login` and `@subscriber_password`, if you need to use SQL Server Authentication when connecting to the Subscriber. 
* A schedule for the Distribution Agent job for this subscription.

Exemple :

Cet exemple crée un abonnement par extraction de mise à jour immédiate vers une publication qui prend en charge les abonnements à mise à jour immédiate. Les valeurs de connexion et de mot de passe sont fournies au moment de l’exécution à l’aide de variables de script sqlcmd.

Remarque

Ce script utilise des variables de script sqlcmd. Ils sont sous la forme $(MyVariable). Pour plus d’informations sur l’utilisation de variables de script sur la ligne de commande et dans SQL Server Management Studio, consultez la section Exécution de scripts de réplication dans la rubrique Concepts des procédures stockées du système de réplication.

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @publisher AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksProductTran';
SET @publicationDB = N'AdventureWorks2008R2';
SET @publisher = $(PubServer);
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription to a transactional 
-- publication using immediate updating with queued updating as a failover.
EXEC sp_addpullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB, 
    @update_mode = N'failover', 
    @subscription_type = N'pull';

-- Add an agent job to synchronize the pull subscription, 
-- which uses Windows Authentication when connecting to the Distributor.
EXEC sp_addpullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication,
    @job_login = @login,
    @job_password = @password; 

-- Add a Windows Authentication-based linked server that enables the 
-- Subscriber-side triggers to make updates at the Publisher. 
EXEC sp_link_publication 
    @publisher = @publisher, 
    @publication = @publication,
    @publisher_db = @publicationDB, 
    @security_mode = 0,
    @login = @login,
    @password = @password;
GO

USE AdventureWorks2008R2;
GO

-- Execute this batch at the Publisher.
DECLARE @publication AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @subscriber AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @subscriptionDB = N'AdventureWorks2008R2Replica'; 
SET @subscriber = $(SubServer);

-- At the Publisher, register the subscription, using the defaults.
USE [AdventureWorks2008R2]
EXEC sp_addsubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @destination_db = @subscriptionDB, 
    @subscription_type = N'pull', 
    @update_mode = N'failover';
GO

Définir les options de résolution des conflits pour la mise à jour en file d’attente (SQL Server Management Studio)

Définissez les options de résolution des conflits pour les publications qui prennent en charge les abonnements mis à jour en file d’attente dans la page Options d’abonnement de la boîte de dialogue Propriétés de publication - <Publication> . Pour plus d’informations sur l’accès à cette boîte de dialogue, consultez Afficher et modifier les propriétés de publication.

Pour définir les options de résolution des conflits de mise à jour en file d’attente

  1. Dans la page Options d’abonnement de la boîte de dialogue Propriétés de publication - <Publication> , sélectionnez l’une des valeurs suivantes pour l’option de stratégie de résolution des conflits :
    • Conserver la modification de l'éditeur
    • Conserver les modifications de l’abonné
    • Réinitialiser l’abonnement
  2. Cliquez sur OK.

Voir aussi

Créer une publication
Abonnements pouvant être mis à jour pour la réplication transactionnelle
Utiliser sqlcmd avec des variables de script