Как настроить подписку для использования веб-синхронизации (программирование репликации на языке 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-адресе веб-служб. |
Настройка подписки для использования веб-синхронизации
Выполните процедуру sp_addmergesubscription на издателе. Укажите значения параметров @publication, @subscriber, @subscriber_db и задайте значение pull в параметре @subscription_type. Подписка по запросу на издателе будет зарегистрирована.
Чтобы создать на подписчике подписку по запросу, выполните хранимую процедуру sp_addmergepullsubscription, указав значения параметров @publication, @publisher и @publisher_db.
Выполните процедуру 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
Чтобы создать на подписчике подписку по запросу, выполните хранимую процедуру sp_addmergepullsubscription, указав значение anonymous в параметре @subscriber_type и задав значения параметров @publication, @publisher и @publisher_db.
Выполните процедуру 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