Web 同期を使用するようにサブスクリプションを構成する方法 (レプリケーション Transact-SQL プログラミング)

新規 : 2005 年 12 月 5 日

ここでは、マージ レプリケーション用に Web 同期を構成する 3 つ目の手順を示します。この手順は、パブリケーションを有効にし、Microsoft インターネット インフォメーション サービス (IIS) を実行しているコンピュータを構成した後に実行します。構成プロセスの概要については、「マージ レプリケーションの Web 同期を構成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。HTTP を通じてのみパブリッシャに接続できるサブスクライバに対して Web 同期を使用するようにサブスクリプションを構成する場合は、パブリケーションを正しく構成する必要があります。詳細については、「Web 同期を許可するようにパブリケーションを構成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。このトピックの手順を完了したら、作成したサブスクリプションを同期します。詳細については、「プル サブスクリプションを同期する方法 (レプリケーション プログラミング)」を参照してください。

ここでは、Web 同期に必要なパラメータについて説明します。プル サブスクリプション作成の詳細については、「プル サブスクリプションを作成する方法 (レプリケーション Transact-SQL プログラミング)」を参照してください。

ms345206.note(ja-jp,SQL.90).gif重要 :
Web 同期に使用される Web サーバーの URL (https://server.domain.com/directory/replisapi.dll など) は、replisapi.dll の場所を指定します。サーバーが SSL (Secure Socket Layer) の既定のポート 443 以外のポートを使用するように構成されている場合は、ポート https://server.domain.com:PortNumber/directory/replisapi.dll も指定する必要があります。URL のサーバーの名前は、証明書が作成されたときに使用された名前と同じにする必要があります。たとえばイントラネットで、https://server/ で Web サーバーにアクセスできるとします。しかし、証明書を作成したときに完全修飾名 (https://server.domain.com/ など) を使用していた場合、Web サービス URL にもこの完全修飾名を使用する必要があります。

Web 同期を使用するようにサブスクリプションを構成するには

  1. パブリッシャで sp_addmergesubscription を実行します。@publication@subscriber@subscriber_db に値を指定し、@subscription_typepull を指定します。これにより、パブリッシャでプル サブスクリプションが登録されます。

  2. サブスクライバで sp_addmergepullsubscription を実行し、プル サブスクリプションを作成します。@publication@publisher、および @publisher_db に値を指定します。

  3. サブスクライバで 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 を実行しているコンピュータへの接続を作成する際に使用するパスワードを指定します。
    ms345206.note(ja-jp,SQL.90).gifメモ :
    Web 同期を使用してサブスクリプションを同期するには、アップロードとダウンロードの両方のフェーズを有効にする必要があります。

HTTP を使用して Web サーバー経由でのみパブリッシャに接続できるサブスクライバに対して Web 同期を使用するようにサブスクリプションを構成するには

  1. サブスクライバで、sp_addmergepullsubscription を実行してプルサブスクリプションを作成します。@subscriber_typeanonymous の値、@publication@publisher、および @publisher_db の値をそれぞれ指定します。

  2. サブスクライバで 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 を実行しているコンピュータへの接続を作成する際に使用するパスワードを指定します。
    ms345206.note(ja-jp,SQL.90).gifメモ :
    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

参照

概念

マージ レプリケーションの Web 同期を構成する方法 (RMO プログラミング)
システム ストアド プロシージャを使用したレプリケーションのプログラミング

その他の技術情報

マージ レプリケーションの Web 同期

ヘルプおよび情報

SQL Server 2005 の参考資料の入手