如何配置发布以允许使用 Web 同步(复制 Transact-SQL 编程)

本主题介绍了为合并复制配置 Web 同步过程中的第一步。 有关配置过程的概述,请参阅如何配置合并复制的 Web 同步(复制 Transact-SQL 编程)。 在完成本主题中的过程后,继续第二步,即配置运行 Microsoft Internet 信息服务 (IIS) 的计算机。 此第二步将在如何为 Web 同步配置 IIS 中进行了介绍。

本主题介绍了 Web 同步所需的参数。 有关如何创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)

配置新的发布

  1. 在发布服务器上,执行 sp_addmergepublication。 将发布的名称指定给 @publication,并将值 true 指定给 @allow_web_synchronization。 指定任何其他参数。 如果订阅服务器仅通过 HTTP 连接到发布服务器,则还需将 @allow_anonymous 的值指定为 true。

  2. 在发布服务器上,若要为此发布添加一个快照代理作业,请执行 sp_addpublication_snapshot。 有关详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)

  3. 为此新发布定义项目。 有关详细信息,请参阅如何定义项目(复制 Transact-SQL 编程)

配置现有发布

  1. 执行 sp_helpmergepublication。 将现有发布的名称指定给 @publication

  2. 如果结果集中 allow_web_synchronization 的值为 1,则已经为发布配置了 Web 同步。 如果结果集中 allow_web_synchronization 的值为 0,则必须启用 Web 同步。

  3. 执行 sp_changemergepublication。 将现有发布的名称指定给 @publication;将值 allow_web_synchronization 指定给 @property;将值 true 指定给 @value

  4. (可选)如果订阅服务器仅通过 HTTP 连接到发布服务器,则执行 sp_changemergepublication。 将现有发布的名称指定给 @publication;将值 allow_anonymous 指定给 @property;将值 true 指定给 @value

示例

下面的示例将创建一个启用 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".

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