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).
Importante |
---|
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
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.
No Assinante, para criar a assinatura pull, execute sp_addmergepullsubscription, especificando valores para @publication, @publisher, e @publisher_db.
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çã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
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.
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çã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