如何:將訂閱設定為使用 Web 同步處理 (複寫 Transact-SQL 程式設計)
本主題中的程序,是設定合併式複寫的 Web 同步處理時所採取的第三個步驟。在啟用發行集及設定執行 Microsoft Internet Information Services (IIS) 的電腦之後,必須執行這個步驟。如需組態處理序的概觀,請參閱<如何:為合併式複寫設定 Web 同步處理 (複寫 Transact-SQL 程式設計)>。當您針對只能透過 HTTP 連接到發行者的訂閱者將訂閱設定為使用 Web 同步處理時,您必須適當地設定發行集。如需詳細資訊,請參閱<如何:設定發行集來允許 Web 同步處理 (複寫 Transact-SQL 程式設計)>。當您完成本主題中的程序之後,請同步處理您已建立的訂閱。如需詳細資訊,請參閱<如何:同步處理提取訂閱 (複寫程式設計)>。
本主題將描述 Web 同步處理所需的參數。如需有關如何建立提取訂閱的詳細資訊,請參閱<如何: 建立提取訂閱 (複寫 Transact-SQL 程式設計)>。
重要事項 |
---|
用於 Web 同步處理之 Web 伺服器的 URL (例如 https://server.domain.com/directory/replisapi.dll) 會指定 replisapi.dll 的位置。如果設定伺服器針對安全通訊端層 (SSL) 使用預設通訊埠 443 以外的通訊埠,您也必須提供通訊埠,例如:https://server.domain.com:PortNumber/directory/replisapi.dll。URL 中的伺服器名稱必須與建立憑證時所用的名稱相同。例如,在內部網路中,您可以透過 https://server/ 來存取 Web 伺服器。但是,如果在建立憑證時使用了完整名稱 (例如 https://server.domain.com/),您就必須在 Web 服務 URL 中使用這個完整名稱。 |
若要將訂閱設定為使用 Web 同步處理
在發行者上,執行 sp_addmergesubscription。指定 @publication、@subscriber、@subscriber_db 的值,並將 @subscription_type 的值指定為 pull。這樣會在發行者上註冊提取訂閱。
若要在訂閱者上建立提取訂閱,請執行 sp_addmergepullsubscription,為 @publication、@publisher 和 @publisher_db 指定值。
在訂閱者上執行 sp_addmergepullsubscription_agent,為 @publisher、@publisher_db、@publication 指定值,並針對 @use_web_sync 指定 1 的值及指定下列參數的值:
@internet_url 是 replisapi.dll 的位置。
@internet_security_mode 是從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的安全性模式。0 的值指定會使用「基本驗證」,1 的值 (預設值) 指定會使用「Windows 整合式驗證」。
@internet_login 是透過「基本驗證」從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的登入。
@internet_password 是透過「基本驗證」從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的密碼。
[!附註]
若要使用 Web 同步處理來同步處理訂閱,必須同時啟用上載和下載階段。
當您針對只能透過 HTTP 的 Web 伺服器連接到發行者的訂閱者來將訂閱設定為使用 Web 同步處理時
若要在訂閱者上建立提取訂閱,請執行 sp_addmergepullsubscription,針對 @subscriber_type 指定 anonymous 的值及指定 @publication、@publisher 和 @publisher_db 的值。
在訂閱者上執行 sp_addmergepullsubscription_agent,為 @publisher、@publisher_db、@publication 指定值,並針對 @use_web_sync 指定 1 的值及指定下列參數的值:
@internet_url 是 replisapi.dll 的位置。
@internet_security_mode 是從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的安全性模式。0 的值指定會使用「基本驗證」,1 的值 (預設值) 指定會使用「Windows 整合式驗證」。
@internet_login 是透過「基本驗證」從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的登入。
@internet_password 是透過「基本驗證」從訂閱者連接到執行 IIS 的電腦時,合併代理程式所將使用的密碼。
[!附註]
若要使用 Web 同步處理來同步處理訂閱,必須同時啟用上載和下載階段。
範例
下列範例會使用 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".
-- 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'AdventureWorks';
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 [AdventureWorksReplica]
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 [AdventureWorks]
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'AdventureWorksReplica';
-- 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 的 Web 伺服器連接到發行者的訂閱者,使用 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".
-- 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'AdventureWorks';
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 [AdventureWorksReplica]
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