Compartir a través de


Cómo configurar una suscripción para usar la sincronización web (programación de la replicación con Transact-SQL)

El procedimiento descrito en este tema es el tercer paso para configurar la sincronización web para la replicación de mezcla. Lleve a cabo este paso después de habilitar la publicación y configurar el equipo que ejecuta Microsoft Internet Information Services (IIS). Para obtener información general sobre el proceso de configuración, vea Cómo configurar la sincronización web para la replicación de mezcla (programación de la replicación con Transact-SQL). Al configurar una suscripción para utilizar la sincronización web para suscriptores que sólo puedan conectarse al publicador a través de HTTP, debe configurar correctamente la publicación. Para obtener más información, vea Cómo configurar una publicación para que permita la sincronización web (programación de la replicación con Transact-SQL). Después de realizar el procedimiento de este tema, sincronice la suscripción que ha creado. Para obtener más información, vea Cómo sincronizar una suscripción de extracción (programación de la replicación).

En este tema se describen los parámetros que requiere la sincronización web. Para obtener más información acerca de cómo crear una suscripción de extracción, vea Cómo crear una suscripción de extracción (programación de la replicación con Transact-SQL).

Nota importanteImportante

La dirección URL del servidor web que se usa para la sincronización web (como https://servidor.dominio.com/directorio/replisapi.dll) especifica la ubicación de replisapi.dll. Si el servidor está configurado para usar un puerto diferente del puerto predeterminado 443 para la Capa de sockets seguros (SSL), también debe proporcionar el puerto: https://servidor.dominio.com:númeroDePuerto/directorio/replisapi.dll. El nombre del servidor en la dirección URL debe ser idéntico al que usó al crear el certificado SSL (Capa de sockets seguros) para IIS. Por ejemplo, en una intranet, es posible que pueda obtener acceso a un servidor web a través de https://servidor/. Sin embargo, si se usa el nombre completo (como https://servidor.dominio.com/) cuando se creó el certificado, debe usar este nombre completo en la dirección URL del servicio web.

Para configurar una suscripción para que use la sincronización web

  1. En el publicador, ejecute sp_addmergesubscription. Especifique valores para @publication, @subscriber, @subscriber_dby el valor pull para @subscription_type. Esto registra la suscripción de extracción en el publicador.

  2. En el suscriptor, para crear la suscripción de extracción, ejecute sp_addmergepullsubscription, especificando los valores para @publication, @publisher y @publisher_db.

  3. En el suscriptor, ejecute sp_addmergepullsubscription_agent, especificando los valores para @publisher, @publisher_db, @publication, un valor de 1 para @use_web_sync y valores para los parámetros siguientes:

    • @internet_url es la ubicación de replisapi.dll.

    • @internet_security_mode es el modo de seguridad que el Agente de mezcla usará al establecer conexiones desde el suscriptor al equipo que está ejecutando IIS. Un valor de 0 especifica que se usa la autenticación básica; un valor de 1 (predeterminado) especifica que se usa la autenticación integrada de Windows.

    • @internet_login es el inicio de sesión que el Agente de mezcla usará al establecer conexiones del suscriptor al equipo que está ejecutando IIS con la autenticación básica.

    • @internet_login es la contraseña que el Agente de mezcla usará al establecer conexiones del suscriptor al equipo que está ejecutando IIS con la autenticación básica.

    [!NOTA]

    Para sincronizar una suscripción con la sincronización web, las fases de carga y descarga deben estar habilitadas.

Para configurar una suscripción que use la sincronización web para suscriptores que sólo puedan conectarse al publicador a través de un servidor web con HTTP

  1. En el suscriptor, para crear la suscripción de extracción, ejecute sp_addmergepullsubscription, especificando un valor de anonymous para @subscriber_type y valores para @publication, @publishery @publisher_db.

  2. En el suscriptor, ejecute sp_addmergepullsubscription_agent, especificando los valores para @publisher, @publisher_db, @publication, un valor de 1 para @use_web_sync y valores para los parámetros siguientes:

    • @internet_url es la ubicación de replisapi.dll.

    • @internet_security_mode es el modo de seguridad que el Agente de mezcla usará al establecer conexiones desde el suscriptor al equipo que está ejecutando IIS. Un valor de 0 especifica que se usa la autenticación básica; un valor de 1 (predeterminado) especifica que se usa la autenticación integrada de Windows.

    • @internet_login es el inicio de sesión que el Agente de mezcla usará al establecer conexiones del suscriptor al equipo que está ejecutando IIS con la autenticación básica.

    • @internet_login es la contraseña que el Agente de mezcla usará al establecer conexiones del suscriptor al equipo que está ejecutando IIS con la autenticación básica.

    [!NOTA]

    Para sincronizar una suscripción con la sincronización web, las fases de carga y descarga deben estar habilitadas.

Ejemplo

El ejemplo siguiente crea una suscripción que se sincroniza con el publicador mediante la sincronización 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'AdventureWorks';
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 [AdventureWorksReplica]
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 [AdventureWorks]
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'AdventureWorksReplica';

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

En el ejemplo siguiente, se crea una suscripción que se sincroniza con el publicador mediante la sincronización web para un suscriptor que sólo puede conectarse al publicador a través de un servidor web con 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'AdventureWorks';
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 [AdventureWorksReplica]
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