如何配置发布以允许使用 Web 同步(复制 Transact-SQL 编程)
本主题介绍了为合并复制配置 Web 同步过程中的第一步。 有关配置过程的概述,请参阅如何配置合并复制的 Web 同步(复制 Transact-SQL 编程)。 在完成本主题中的过程后,继续第二步,即配置运行 Microsoft Internet 信息服务 (IIS) 的计算机。 此第二步将在如何为 Web 同步配置 IIS 中进行了介绍。
本主题介绍了 Web 同步所需的参数。 有关如何创建发布的详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。
配置新的发布
在发布服务器上,执行 sp_addmergepublication。 将发布的名称指定给 @publication,并将值 true 指定给 @allow_web_synchronization。 指定任何其他参数。 如果订阅服务器仅通过 HTTP 连接到发布服务器,则还需将 @allow_anonymous 的值指定为 true。
在发布服务器上,若要为此发布添加一个快照代理作业,请执行 sp_addpublication_snapshot。 有关详细信息,请参阅如何创建发布(复制 Transact-SQL 编程)。
为此新发布定义项目。 有关详细信息,请参阅如何定义项目(复制 Transact-SQL 编程)。
配置现有发布
执行 sp_helpmergepublication。 将现有发布的名称指定给 @publication。
如果结果集中 allow_web_synchronization 的值为 1,则已经为发布配置了 Web 同步。 如果结果集中 allow_web_synchronization 的值为 0,则必须启用 Web 同步。
执行 sp_changemergepublication。 将现有发布的名称指定给 @publication;将值 allow_web_synchronization 指定给 @property;将值 true 指定给 @value。
(可选)如果订阅服务器仅通过 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