Поделиться через


Как настроить подписку для использования веб-синхронизации (программирование репликации на языке Transact-SQL)

Описанные в данном разделе процедуры являются третьим этапом в настройке веб-синхронизации при репликации слиянием. Этот шаг выполняется после включения публикации и настройки компьютера, где работают службы Microsoft IIS. Обзор этого процесса настройки см. в разделе Как настроить веб-синхронизацию для репликации слиянием (программирование репликации на языке Transact-SQL). Если подписка настраивается на использование веб-синхронизации для подписчиков, которые могут соединяться с издателем только по протоколу HTTP, необходимо соответствующим образом настроить публикацию. Дополнительные сведения см. в разделе Как настроить публикацию для использования веб-синхронизации (программирование репликации на языке Transact-SQL). После завершения выполнения процедуры, описанной в этом разделе, выполните синхронизацию созданной подписки. Дополнительные сведения см. в разделе Как синхронизировать подписку по запросу (программирование репликации).

В этом разделе описываются параметры, необходимые для веб-синхронизации. Дополнительные сведения о создании подписок по запросу см. в разделе Как создавать подписки по запросу (программирование репликации на языке Transact-SQL).

Важное примечаниеВажно!

URL-адрес веб-сервера, используемого для веб-синхронизации (например https://сервер.домен.com/папка/replisapi.dll), задает местоположение файла replisapi.dll. Если сервер настроен на использование порта, отличного от порта для протокола SSL по умолчанию (443), то необходимо также указать адрес порта в следующем виде: https://сервер.домен.com:номер_порта/каталог/replisapi.dll. Имя сервера в URL-адресе должно совпадать с именем, которое использовалось при создании сертификата. Например, в корпоративной сети может оказаться возможным подключение к веб-серверу, используя адрес вида https://сервер/. Однако если при создании сертификата было использовано уточненное имя (например https://сервер.домен.com/), то его же следует использовать и в URL-адресе веб-служб.

Настройка подписки для использования веб-синхронизации

  1. Выполните процедуру sp_addmergesubscription на издателе. Укажите значения параметров @publication, @subscriber, @subscriber_db и задайте значение pull в параметре @subscription_type. Подписка по запросу на издателе будет зарегистрирована.

  2. Чтобы создать на подписчике подписку по запросу, выполните хранимую процедуру sp_addmergepullsubscription, указав значения параметров @publication, @publisher и @publisher_db.

  3. Выполните процедуру sp_addmergepullsubscription_agent на подписчике, указав значения для параметров @publisher, @publisher_db, @publication, значение 1 в параметре @use_web_sync и значения для следующих параметров:

    • @internet_url — расположение файла replisapi.dll.

    • @internet_security_mode — режим безопасности, используемый агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS. Значение 0 показывает, что используется обычная проверка подлинности, а значение 1 (по умолчанию) указывает, что используется встроенная проверка подлинности Windows.

    • @internet_login — имя входа, используемое агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS, если применяется обычная проверка подлинности.

    • @internet_password — пароль, используемый агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS, если применяется обычная проверка подлинности.

    ПримечаниеПримечание

    Чтобы синхронизировать подписку с помощью веб-синхронизации, необходимо включить и стадию передачи, и стадию загрузки.

Настройка подписки на использование веб-синхронизации для подписчиков, которые могут подключаться к издателю через веб-сервер только по протоколу HTTP

  1. Чтобы создать на подписчике подписку по запросу, выполните хранимую процедуру sp_addmergepullsubscription, указав значение anonymous в параметре @subscriber_type и задав значения параметров @publication, @publisher и @publisher_db.

  2. Выполните процедуру sp_addmergepullsubscription_agent на подписчике, указав значения для параметров @publisher, @publisher_db, @publication, значение 1 в параметре @use_web_sync и значения для следующих параметров:

    • @internet_url — расположение файла replisapi.dll.

    • @internet_security_mode — режим безопасности, используемый агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS. Значение 0 показывает, что используется обычная проверка подлинности, а значение 1 (по умолчанию) указывает, что используется встроенная проверка подлинности Windows.

    • @internet_login — имя входа, используемое агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS, если применяется обычная проверка подлинности.

    • @internet_password — пароль, используемый агентом слияния для установления соединений между подписчиком и компьютером, где работают службы IIS, если применяется обычная проверка подлинности.

    ПримечаниеПримечание

    Чтобы синхронизировать подписку с помощью веб-синхронизации, необходимо включить и стадию передачи, и стадию загрузки.

Пример

В следующем примере производится создание подписки, синхронизируемой с издателем с использованием веб-синхронизации.

-- 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

В следующем примере создается подписка, синхронизируемая с издателем с использованием веб-синхронизации. При этом подписчик может подключаться к серверу издателя только через веб-сервер по протоколу 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