Compartilhar via


Como configurar uma Assinatura para usar a sincronização da Web (Programação Transact-SQL de replicação)

O procedimento neste tópico é a terceira etapa da configuração da sincronização da Web para replicação de mesclagem. Você deve executar esta etapa após habilitar a publicação e configurar o computador que está executando Microsoft Serviços de Informações da Internet (IIS). Para uma visão geral do processo de configuração, consulte Como configurar a sincronização da Web para replicação de mesclagem (Programação Transact-SQL de replicação). Ao configurar uma assinatura para usar sincronização da Web para Assinantes que podem se conectar ao Publicador apenas através de HTTP, você deverá configurar adequadamente a Publicação. Para obter mais informações, consulte Como configurar uma publicação para permitir a sincronização da Web (Programação Transact-SQL de replicação). Depois de concluir o procedimento neste tópico, sincronize a assinatura que você criou. Para obter mais informações, consulte Como sincronizar uma assinatura pull (Programação de replicação).

Esse tópico descreve os parâmetros necessários à sincronização da Web. Para obter mais informações sobre como criar assinaturas pull, consulte Como criar uma assinatura push (Programação Transact-SQL de replicação).

Observação importanteImportante

A URL do servidor Web que é usado para a sincronização da Web (como https://servidor.domínio.com/diretório/replisapi.dll) especifica a localização de replisapi.dll. Se o servidor for configurado para usar uma porta diferente da porta 443 padrão para Secure Sockets Layers (SSL), será preciso fornecer a porta como: https://servidor.domínio.com:PortNumber/diretório/replisapi.dll. É necessário que o nome do servidor na URL seja o mesmo nome utilizado na criação do certificado. Por exemplo, em uma intranet, seria possível acessar um servidor Web através de https://server/. No entanto, se o nome totalmente qualificado, (como https://server.domain.com/) foi usado na criação do certificado, será necessário usar esse nome totalmente qualificado na URL do serviço Web.

Para configurar uma assinatura para usar a sincronização da Web

  1. No Publicador, execute sp_addmergesubscription. Especifique valores para @publication, @subscriber, @subscriber_db e um valor de pullpara @subscription_type. Isso registra a assinatura pull no Publicador.

  2. No Assinante, para criar a assinatura pull, execute sp_addmergepullsubscription, especificando valores para @publication, @publisher, e @publisher_db.

  3. No Assinante, execute sp_addmergepullsubscription_agent, especificando valores para @publisher, @publisher_db, @publication, o valor 1 para @use_web_sync e valores para os seguintes parâmetros:

    • @internet_url é a localização de replisapi.dll.

    • @internet_security_mode é o modo de segurança que o Merge Agent usará ao fazer conexões do Assinante com o computador que está executando o IIS. O valor 0 especifica o uso da Autenticação Básica; o valor 1 (padrão) especifica o uso da Autenticação Integrada do Windows.

    • @internet_login é o logon que o Merge Agent irá usar ao estabelecer conexões do Assinante para o computador que está executando IISS usando Autenticação Básica.

    • @internet_password é a senha que o Merge Agent usará ao estabelecer conexões do Assinante com o computador que está executando o IIS usando Autenticação Básica.

    ObservaçãoObservação

    Para sincronizar uma assinatura usando a sincronização da Web, tanto as fases de carregamento quanto de download devem estar habilitadas.

Para configurar uma assinatura, use a sincronização da Web para Assinantes que somente podem conectar-se ao Publicador através de um servidor da Web usando HTTP

  1. No Assinante, para criar a assinatura pull, execute sp_addmergepullsubscription, especificando o valor anonymous para o @subscriber_type e valores para @publication, @publisher e @publisher_db.

  2. No Assinante, execute sp_addmergepullsubscription_agent, especificando valores para @publisher, @publisher_db, @publication, o valor 1 para @use_web_sync e valores para os seguintes parâmetros:

    • @internet_url é a localização de replisapi.dll.

    • @internet_security_mode é o modo de segurança que o Merge Agent usará ao fazer conexões do Assinante com o computador que está executando o IIS. O valor 0 especifica o uso da Autenticação Básica; o valor 1 (padrão) especifica o uso da Autenticação Integrada do Windows.

    • @internet_login é o logon que o Merge Agent usará ao estabelecer conexões do Assinante com o computador que está executando IISS usando Autenticação Básica.

    • @internet_password é a senha que o Merge Agent usará ao estabelecer conexões do Assinante com o computador que está executando o IIS usando Autenticação Básica.

    ObservaçãoObservação

    Para sincronizar uma assinatura usando a sincronização da Web, tanto a fase de carregamento quanto a de download devem ser habilitadas.

Exemplo

O exemplo a seguir cria uma assinatura que é sincronizada com o Publicador usando a sincronização da 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

O exemplo a seguir cria uma assinatura que é sincronizada com o Publicador usando sincronização da Web para um Assinante que só pode se conectar ao Publicador através de um servidor da Web usando 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