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


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

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

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

Настройка новой публикации

  1. Выполните процедуру sp_addmergepublication на издателе. В качестве значения параметра @publication укажите имя публикации, а параметру @allow_web_synchronization присвойте значение true. Задайте все остальные необходимые параметры. Если подписчики соединяются с издателем только по протоколу HTTP, также присвойте значение true параметру @allow_anonymous.

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

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

Настройка существующей публикации

  1. Выполните хранимую процедуру sp_helpmergepublication. В качестве значения параметра @publication укажите имя существующей публикации.

  2. Если параметр allow_web_synchronization в результирующем наборе имеет значение 1, то веб-синхронизация уже настроена для публикации. Если параметр allow_web_synchronization в результирующем наборе имеет значение 0, то веб-синхронизацию необходимо включить.

  3. Выполните хранимую процедуру sp_changemergepublication. В качестве значения параметра @publication укажите имя существующей публикации, параметру @property присвойте значение allow_web_synchronization, а параметру @value — значение true.

  4. Если подписчики подключаются к издателю только по протоколу 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