Procedura: Configurazione di una sottoscrizione per l'utilizzo della sincronizzazione tramite il Web (programmazione Transact-SQL della replica)

La procedura descritta in questo argomento rappresenta il terzo passaggio nella configurazione della sincronizzazione tramite il Web per la replica di tipo merge. Questo passaggio è successivo all'attivazione della pubblicazione e alla configurazione del computer che esegue Microsoft Internet Information Services (IIS). Per una panoramica del processo di configurazione, vedere Procedura: Configurazione della sincronizzazione tramite il Web per la replica di tipo merge (programmazione Transact-SQL della replica). Quando si configura una sottoscrizione per l'utilizzo della sincronizzazione tramite il Web per Sottoscrittori che possono connettersi al server di pubblicazione solo tramite HTTP, è necessario configurare correttamente la pubblicazione. Per ulteriori informazioni, vedere Procedura: Configurazione di una pubblicazione per consentire la sincronizzazione tramite il Web (programmazione Transact-SQL della replica). Al termine della procedura descritta in questo argomento, sincronizzare la sottoscrizione creata. Per ulteriori informazioni, vedere Procedura: Sincronizzazione di una sottoscrizione pull (programmazione della replica).

In questo argomento sono descritti i parametri richiesti per la sincronizzazione tramite il Web. Per ulteriori informazioni sulla creazione di sottoscrizioni pull, vedere Procedura: Creazione di una sottoscrizione pull (programmazione Transact-SQL della replica).

Nota importanteImportante

L'URL del server Web utilizzato per la sincronizzazione tramite il Web, ad esempio https://server.domain.com/directory/replisapi.dll, specifica il percorso del file replisapi.dll. Se il server è configurato per l'utilizzo di una porta non predefinita per SSL (Secure Sockets Layer), ovvero non la porta 443, è necessario specificare anche la porta: https://server.domain.com:NumeroPorta/directory/replisapi.dll. Il nome del server nell'URL deve essere identico a quello utilizzato durante la creazione del certificato SSL. In una rete Intranet, ad esempio, può essere possibile accedere a un server Web tramite https://server/. Se tuttavia viene utilizzato il nome completo, ad esempio https://server.domain.com/, al momento della creazione del certificato, è necessario utilizzare tale nome nell'URL del servizio Web.

Per configurare una sottoscrizione per l'utilizzo della sincronizzazione tramite il Web

  1. Nel server di pubblicazione eseguire sp_addmergesubscription. Specificare i valori per @publication, @subscriber, @subscriber_db e il valore pull per @subscription_type. La sottoscrizione pull verrà registrata nel server di pubblicazione.

  2. Per creare la sottoscrizione pull, nel Sottoscrittore eseguire sp_addmergepullsubscription, specificando i valori per @publication, @publisher e @publisher_db.

  3. Nel Sottoscrittore eseguire sp_addmergepullsubscription_agent, specificando i valori per @publisher, @publisher_db, @publication, il valore 1 per @use_web_sync e i valori per i parametri seguenti:

    • @internet_url: percorso del file replisapi.dll.

    • @internet_security_mode: modalità di protezione che verrà utilizzata dall'agente merge per le connessioni dal Sottoscrittore al computer che esegue IIS. Il valore 0 specifica che viene utilizzata l'autenticazione di base. Il valore 1 (impostazione predefinita) specifica che viene utilizzata l'autenticazione integrata di Windows.

    • @internet_login: account di accesso che verrà utilizzato dall'agente di merge per le connessioni dal Sottoscrittore al computer che esegue IIS utilizzando l'autenticazione di base.

    • @internet_password: password che verrà utilizzata dall'agente di merge per le connessioni dal Sottoscrittore al computer che esegue IIS utilizzando l'autenticazione di base.

    Nota

    Per sincronizzare una sottoscrizione utilizzando la sincronizzazione tramite il Web, è necessario attivare sia la fase di caricamento che la fase di download.

Per configurare una sottoscrizione per l'utilizzo della sincronizzazione tramite il Web per Sottoscrittori che possono connettersi al server di pubblicazione solo tramite un server Web utilizzando HTTP

  1. Per creare la sottoscrizione pull, nel Sottoscrittore eseguire sp_addmergepullsubscription, specificando il valore anonymous per @subscriber_type e i valori per @publication, @publisher e @publisher_db.

  2. Nel Sottoscrittore eseguire sp_addmergepullsubscription_agent, specificando i valori per @publisher, @publisher_db, @publication, il valore 1 per @use_web_sync e i valori per i parametri seguenti:

    • @internet_url: percorso del file replisapi.dll.

    • @internet_security_mode: modalità di protezione che verrà utilizzata dall'agente merge per le connessioni dal Sottoscrittore al computer che esegue IIS. Il valore 0 specifica che viene utilizzata l'autenticazione di base. Il valore 1 (impostazione predefinita) specifica che viene utilizzata l'autenticazione integrata di Windows.

    • @internet_login: account di accesso che verrà utilizzato dall'agente di merge per le connessioni dal Sottoscrittore al computer che esegue IIS utilizzando l'autenticazione di base.

    • @internet_password: password che verrà utilizzata dall'agente di merge per le connessioni dal Sottoscrittore al computer che esegue IIS utilizzando l'autenticazione di base.

    Nota

    Per sincronizzare una sottoscrizione utilizzando la sincronizzazione tramite il Web, è necessario attivare sia la fase di caricamento che la fase di download.

Esempio

Nell'esempio seguente viene creata una sottoscrizione sincronizzata con il server di pubblicazione mediante la sincronizzazione tramite il 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

Nell'esempio seguente viene creata una sottoscrizione sincronizzata con il server di pubblicazione mediante la sincronizzazione tramite il Web per un Sottoscrittore che può connettersi al server di pubblicazione solo tramite un server Web utilizzando 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