방법: 구독에서 웹 동기화를 사용하도록 구성(복제 Transact-SQL 프로그래밍)

이 항목의 절차는 병합 복제를 위해 웹 동기화를 구성하는 세 번째 단계입니다. 게시를 설정하고 Microsoft 인터넷 정보 서비스(IIS)를 실행하는 컴퓨터를 구성한 다음 이 단계를 수행합니다. 구성 프로세스에 대한 개요는 방법: 병합 복제에 대한 웹 동기화 구성(복제 Transact-SQL 프로그래밍)을 참조하십시오. HTTP를 통해서만 게시자에 연결할 수 있는 구독자에 대해 웹 동기화를 사용하도록 구독을 구성하는 경우 게시를 올바르게 구성해야 합니다. 자세한 내용은 방법: 웹 동기화를 사용하도록 게시 구성(복제 Transact-SQL 프로그래밍)을 참조하십시오. 이 항목의 절차를 완료한 다음에는 만든 구독을 동기화합니다. 자세한 내용은 방법: 끌어오기 구독 동기화(Replication Programming)를 참조하십시오.

이 항목에서는 웹 동기화에 필요한 매개 변수에 대해 설명합니다. 끌어오기 구독을 만드는 방법은 방법: 끌어오기 구독 만들기(Replication Transact-SQL Programming)를 참조하십시오.

중요 정보중요

웹 동기화에 사용되는 웹 서버의 URL(예: https://server.domain.com/directory/replisapi.dll)은 replisapi.dll의 위치를 지정합니다. 서버가 SSL(Secure Sockets Layer)에 대해 기본 443 포트 외의 다른 포트를 사용하도록 구성된 경우 https://server.domain.com:PortNumber/directory/replisapi.dll과 같이 해당 포트도 지정해야 합니다. URL의 서버 이름은 인증서를 만들 때 사용된 서버 이름과 동일해야 합니다. 예를 들어 인트라넷에서는 https://server/를 통해 웹 서버에 액세스할 수 있습니다. 그러나 인증서를 만들 때 https://server.domain.com/과 같은 정규화된 이름을 사용한 경우에는 웹 서비스 URL에 이 정규화된 이름을 사용해야 합니다.

구독에서 웹 동기화를 사용하도록 구성하려면

  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_sync1 값을, 다음 매개 변수에 각 값을 지정합니다.

    • @internet_url은 replisapi.dll의 위치입니다.

    • @internet_security_mode는 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 연결할 때 사용할 보안 모드입니다. 0 값은 기본 인증을 사용하도록 지정하며 1 값(기본값)은 Windows 통합 인증을 사용하도록 지정합니다.

    • @internet_login은 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 기본 인증을 사용하여 연결할 때 사용할 로그인입니다.

    • @internet_password는 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 기본 인증을 사용하여 연결할 때 사용할 암호입니다.

    [!참고]

    웹 인증을 사용하여 구독을 동기화하려면 업로드 및 다운로드 단계를 모두 설정해야 합니다.

HTTP를 사용하는 웹 서버를 통해서만 게시자에 연결할 수 있는 구독자에 대해 웹 동기화를 사용하도록 구독을 구성하려면

  1. 구독자에서 끌어오기 구독을 만들려면 sp_addmergepullsubscription을 실행하고 @subscriber_typeanonymous 값을 지정하고 @publication, @publisher@publisher_db에 각 값을 지정합니다.

  2. 구독자에서 sp_addmergepullsubscription_agent를 실행하고 @publisher, @publisher_db, @publication 값을 지정하고 @use_web_sync1 값을, 다음 매개 변수에 각 값을 지정합니다.

    • @internet_url은 replisapi.dll의 위치입니다.

    • @internet_security_mode는 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 연결할 때 사용할 보안 모드입니다. 0 값은 기본 인증을 사용하도록 지정하며 1 값(기본값)은 Windows 통합 인증을 사용하도록 지정합니다.

    • @internet_login은 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 기본 인증을 사용하여 연결할 때 사용할 로그인입니다.

    • @internet_password는 병합 에이전트가 구독자에서 IIS를 실행하는 컴퓨터로 기본 인증을 사용하여 연결할 때 사용할 암호입니다.

    [!참고]

    웹 인증을 사용하여 구독을 동기화하려면 업로드 및 다운로드 단계를 모두 설정해야 합니다.

다음 예에서는 웹 동기화를 사용하여 게시자와 동기화되는 구독을 만듭니다.

-- 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'AdventureWorks2008R2';
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 [AdventureWorks2008R2Replica]
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 [AdventureWorks2008R2]
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'AdventureWorks2008R2Replica';

-- 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로 웹 서버를 통해서만 게시자에 연결할 수 있는 구독자에 대해 웹 동기화를 사용하여 게시자와 동기화되는 구독을 만듭니다.

-- 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'AdventureWorks2008R2';
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 [AdventureWorks2008R2Replica]
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