Procédure : configurer un abonnement pour utiliser la synchronisation Web (programmation Transact-SQL de la réplication)

La procédure de cette rubrique constitue la troisième étape de la configuration de la synchronisation Web pour la réplication de fusion. Vous réalisez cette étape après avoir activé la publication et configuré l'ordinateur qui exécute Microsoft Internet Information Services (IIS). Pour obtenir une vue d'ensemble du processus de configuration, consultez Procédure : configurer la synchronisation Web pour la réplication de fusion (programmation Transact-SQL de la réplication). Lorsque vous configurez un abonnement pour utiliser la synchronisation Web pour les Abonnés qui peuvent se connecter uniquement au serveur de publication via le protocole HTTP, vous devez configurer correctement la publication. Pour plus d'informations, consultez Procédure : configurer une publication qui autorise la synchronisation Web (programmation Transact-SQL de la réplication). Une fois la procédure de cette rubrique terminée, synchronisez l'abonnement créé. Pour plus d'informations, consultez Procédure : synchroniser un abonnement par extraction de données (pull) (Programmation de la réplication).

Cette rubrique décrit les paramètres qui sont requis par la synchronisation Web. Pour plus d'informations sur la manière de créer des abonnements par extraction, consultez Procédure : créer un abonnement par extraction de données (programmation Transact-SQL de réplication).

Important

L'URL du serveur Web utilisé pour la synchronisation Web (tel que https://serveur.domaine.com/répertoire/replisapi.dll) spécifie l'emplacement de replisapi.dll. Si le serveur est configuré pour utiliser un port autre que le port 443 par défaut pour le protocole SSL (Secure Sockets Layer), vous devez également indiquer le port : https://serveur.domaine.com:NuméroPort/répertoire/replisapi.dll. Le nom du serveur dans l'URL doit être identique au nom utilisé lors de la création du certificat. Par exemple, dans un intranet, vous pourriez accéder à un serveur Web via https://serveur/. Toutefois, si le nom complet (par exemple https://serveur.domaine.com/) était utilisé lors de la création du certificat, vous devez utiliser le nom complet dans l'URL du service Web.

Pour configurer un abonnement pour utiliser la synchronisation Web

  1. Sur le serveur de publication, exécutez sp_addmergesubscription. Spécifiez des valeurs pour @publication, @subscriber, @subscriber_db et la valeur pull pour @subscription_type. Ceci inscrit l'abonnement par extraction sur le serveur de publication.

  2. Sur l'Abonné, pour créer l'abonnement par extraction, exécutez sp_addmergepullsubscription, en spécifiant des valeurs pour @publication, @publisher et @publisher_db.

  3. Sur l'Abonné, exécutez sp_addmergepullsubscription_agent, en spécifiant des valeurs pour @publisher, @publisher_db, @publication, la valeur 1 pour @use_web_sync et des valeurs pour les paramètres suivants :

    • @internet_url correspond à l'emplacement de replisapi.dll.

    • @internet_security_mode correspond au mode de sécurité que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS. La valeur 0 spécifie que l'authentification de base est utilisée ; la valeur 1 (valeur par défaut) spécifie que l'authentification intégrée Windows est utilisée.

    • @internet_login correspond au nom d'utilisateur que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS à l'aide de l'authentification de base.

    • @internet_password correspond au mot de passe que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS à l'aide de l'authentification de base.

    Notes

    Pour synchroniser un abonnement à l'aide de la synchronisation Web, les deux phases de téléchargement (Upload et Download) doivent être activées.

Pour configurer un abonnement pour utiliser la synchronisation Web pour les Abonnés qui peuvent se connecter uniquement au serveur de publication via un serveur Web qui utilise le protocole HTTP

  1. Sur l'Abonné, pour créer l'abonnement par extraction, exécutez sp_addmergepullsubscription, en spécifiant la valeur anonymous pour @subscriber_type et des valeurs pour @publication, @publisher et @publisher_db.

  2. Sur l'Abonné, exécutez sp_addmergepullsubscription_agent, en spécifiant des valeurs pour @publisher, @publisher_db, @publication, la valeur 1 pour @use_web_sync et des valeurs pour les paramètres suivants :

    • @internet_url correspond à l'emplacement de replisapi.dll.

    • @internet_security_mode correspond au mode de sécurité que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS. La valeur 0 spécifie que l'authentification de base est utilisée ; la valeur 1 (valeur par défaut) spécifie que l'authentification intégrée Windows est utilisée.

    • @internet_login correspond au nom d'utilisateur que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS à l'aide de l'authentification de base.

    • @internet_password correspond au mot de passe que l'Agent de fusion utilisera lors de l'établissement de connexions de l'Abonné à l'ordinateur qui exécute IIS à l'aide de l'authentification de base.

    Notes

    Pour synchroniser un abonnement à l'aide de la synchronisation Web, les deux phases de téléchargement (Upload et Download) doivent être activées.

Exemple

L'exemple suivant crée un abonnement synchronisé avec le serveur de publication à l'aide de la synchronisation Web.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS 
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2008R2Replica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_password = @password;
GO

USE [AdventureWorks2008R2]
GO

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

-- At the Publisher, register the subscription, using the defaults.
EXEC sp_addmergesubscription 
    @publication = @publication, 
    @subscriber = @subscriber, 
    @subscriber_db = @subscriptionDB, 
    @subscription_type = N'pull';
GO

L'exemple ci-dessous crée un abonnement synchronisé avec le serveur de publication à l'aide de la synchronisation Web pour un Abonné qui peut se connecter uniquement au serveur de publication via un serveur Web au moyen du protocole HTTP.

-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). For information about how to use scripting variables  
-- on the command line and in SQL Server Management Studio, see the 
-- "Executing Replication Scripts" section in the topic
-- "Programming Replication Using System Stored Procedures".

-- Publication must support anonymous Subscribers.
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @websyncurl AS sysname;
DECLARE @security_mode AS int;
DECLARE @login AS sysname;
DECLARE @password AS nvarchar(512);
SET @publication = N'AdvWorksSalesOrdersMergeWebSync';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @security_mode = 0; -- Basic Authentication for IIS
SET @login = $(Login);
SET @password = $(Password);

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2008R2Replica]
EXEC sp_addmergepullsubscription 
    @publisher = @publisher, 
    @publication = @publication, 
    @publisher_db = @publicationDB,
    @subscriber_type = N'anonymous';

-- Add an agent job to synchronize the pull subscription. 
EXEC sp_addmergepullsubscription_agent 
    @publisher = @publisher, 
    @publisher_db = @publicationDB, 
    @publication = @publication, 
    @distributor = @publisher, 
    @job_login = @login, 
    @job_password = @password,
    @use_web_sync = 1,
    @internet_security_mode = @security_mode,
    @internet_url = @websyncurl,
    @internet_login = @login,
    @internet_password = @password;
GO