Как настроить публикацию для использования веб-синхронизации (программирование репликации на языке Transact-SQL)
В этом разделе описан первый шаг настройки веб-синхронизации для репликации слиянием. Обзор этого процесса настройки см. в разделе Как настроить веб-синхронизацию для репликации слиянием (программирование репликации на языке Transact-SQL). После завершения процедур, приведенных в этом разделе, перейдите ко второму шагу и настройте службы Microsoft IIS. Этот второй шаг описан в разделе Как настроить сервер IIS для веб-синхронизации.
В этом разделе описываются параметры, необходимые для веб-синхронизации. Дополнительные сведения о создании публикации см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).
Настройка новой публикации
Выполните процедуру sp_addmergepublication на издателе. В качестве значения параметра @publication укажите имя публикации, а параметру @allow_web_synchronization присвойте значение true. Задайте все остальные необходимые параметры. Если подписчики соединяются с издателем только по протоколу HTTP, также присвойте значение true параметру @allow_anonymous.
Чтобы добавить задание агента моментальных снимков к данной публикации на издателе, выполните хранимую процедуру sp_addpublication_snapshot. Дополнительные сведения см. в разделе Как создать публикацию (программирование репликации на языке Transact-SQL).
Определите статьи для новой публикации. Дополнительные сведения см. в разделе Как определить статью (программирование репликации на языке Transact-SQL).
Настройка существующей публикации
Выполните хранимую процедуру sp_helpmergepublication. В качестве значения параметра @publication укажите имя существующей публикации.
Если параметр allow_web_synchronization в результирующем наборе имеет значение 1, то веб-синхронизация уже настроена для публикации. Если параметр allow_web_synchronization в результирующем наборе имеет значение 0, то веб-синхронизацию необходимо включить.
Выполните хранимую процедуру sp_changemergepublication. В качестве значения параметра @publication укажите имя существующей публикации, параметру @property присвойте значение allow_web_synchronization, а параметру @value — значение true.
Если подписчики подключаются к издателю только по протоколу HTTP, выполните хранимую процедуру sp_changemergepublication (необязательно). В качестве значения параметра @publication укажите имя существующей публикации, параметру @property присвойте значение allow_anonymous, а параметру @value — значение true.
Пример
В следующем примере создается публикация, в которой разрешена веб-синхронизация.
-- 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".
--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @websyncurl AS nvarchar(256);
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2008R2';
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @websyncurl = 'https://' + $(WebServer) + '/WebSync';
SET @login = $(Login);
SET @password = $(Password);
-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption
@dbname=@publicationDB,
@optname=N'merge publish',
@value = N'true'
-- Create a new merge publication, explicitly setting the defaults.
EXEC sp_addmergepublication
@publication = @publication,
-- optional parameters
@description = N'Merge publication of AdventureWorks2008R2 using Web synchronization.',
@publication_compatibility_level = N'90RTM',
-- Enable Web synchronization.
@allow_web_synchronization = N'true',
-- Web synchronization URL hint used by SQL Server Management Studio.
@web_synchronization_url = @websyncurl;
-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot
@publication = @publication,
@job_login = @login,
@job_password = @password;
GO