다음을 통해 공유


sp_addpullsubscription(Transact-SQL)

스냅숏 또는 트랜잭션 게시에 끌어오기 구독을 추가합니다. 이 저장 프로시저는 끌어오기 구독을 만들 구독자의 데이터베이스에서 실행됩니다.

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_addpullsubscription [ @publisher= ] 'publisher'
    [ , [ @publisher_db= ] 'publisher_db' ]
        , [ @publication= ] 'publication'
    [ , [ @independent_agent= ] 'independent_agent' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @description= ] 'description' ]
    [ , [ @update_mode= ] 'update_mode' ]
    [ , [ @immediate_sync = ] immediate_sync ]

인수

  • [ @publisher=] 'publisher'
    게시자의 이름입니다. publisher는 sysname이며 기본값은 없습니다.

  • [ @publisher_db=] 'publisher_db'
    게시자 데이터베이스의 이름입니다. publisher_db는 sysname이며 기본값은 NULL입니다. Oracle 게시자에서는 publisher_db를 무시합니다.

  • [ @publication=] 'publication'
    게시의 이름입니다. publication은 sysname이며 기본값은 없습니다.

  • [ @independent_agent=] 'independent_agent'
    이 게시에 대한 독립 실행형 배포 에이전트가 있는지 여부를 나타냅니다. independent_agent는 nvarchar(5)이며 기본값은 TRUE입니다. true인 경우 이 게시에 대한 독립 실행형 배포 에이전트가 있는 것입니다. false인 경우 각 게시자 데이터베이스/구독자 데이터베이스 쌍당 한 개의 배포 에이전트가 있습니다. independent_agent는 게시의 속성이며 이 경우 게시자와 같은 값을 가져야 합니다.

  • [ @subscription_type=] 'subscription_type'
    구독의 유형입니다. subscription_type은 nvarchar(9)이며 기본값은 anonymous입니다. 게시자에서 구독을 등록하지 않고 구독을 만들려는 경우가 아니면 subscription_type에 대해 pull 값을 지정해야 합니다. 이 경우 anonymous 값을 지정해야 합니다. 구독 구성 중에 게시자에 대한 SQL Server 연결을 설정할 수 없는 경우 이 작업을 수행해야 합니다.

  • [ @description=] 'description'
    게시에 대한 설명입니다. description은 nvarchar(255)이며 기본값은 NULL입니다.

  • [ @update_mode=] 'update_mode'
    업데이트의 유형입니다. update_mode는 nvarchar(30)이며 다음 값 중 하나일 수 있습니다.

    설명

    read only(기본값)

    구독이 읽기 전용입니다. 구독자에서의 변경 내용이 게시자로 다시 전달되지 않습니다. 구독자에서 업데이트가 수행되지 않을 때 사용해야 합니다.

    synctran

    즉시 업데이트 구독에 대한 지원을 사용합니다.

    queued tran

    지연 업데이트 구독을 사용합니다. 구독자에서 데이터 수정이 가능하며 수정 내용은 큐에 저장된 다음 게시자로 전파됩니다.

    failover

    즉시 업데이트를 기본으로 사용하고 장애 조치(Failover)로 지연 업데이트를 사용합니다. 구독자에서 데이터 수정이 가능하며 수정 내용은 게시자에 즉시 전파됩니다. 게시자와 구독자가 연결되지 않은 경우 구독자에서의 데이터 수정 내용은 구독자와 게시자가 다시 연결될 때까지 큐에 저장됩니다.

    queued failover

    구독을 즉시 업데이트 모드로 변경할 수 있는 지연 업데이트 구독을 사용합니다. 구독자에서 데이터 수정이 가능하며 구독자와 게시자 간에 연결이 설정될 때까지 수정 내용을 큐에 저장할 수 있습니다. 연속 연결이 설정되면 업데이트 모드를 즉시 업데이트로 변경할 수 있습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @immediate_sync =] immediate_sync
    스냅숏 에이전트가 실행될 때마다 동기화 파일을 만들지 아니면 다시 만들지를 나타냅니다. immediate_sync는 bit이고 기본값은 1이며 sp_addpublication의 immediate_sync와 같은 값으로 설정해야 합니다. immediate_sync는 게시의 속성이며 이 경우 게시자와 같은 값을 가져야 합니다.

반환 코드 값

0(성공) 또는 1(실패)

주의

sp_addpullsubscription은 스냅숏 복제 및 트랜잭션 복제에 사용됩니다.

보안 정보보안 정보

지연 업데이트 구독의 경우 SQL Server 인증을 사용하여 구독자에 연결하고 각 구독자로의 연결에는 다른 계정을 지정합니다. 지연 업데이트를 지원하는 끌어오기 구독을 만드는 경우 복제는 항상 Windows 인증을 사용하도록 연결을 설정합니다. 끌어오기 구독에서 복제는 SQL Server 인증을 사용하는 데 필요한 메타데이터를 구독자에서 액세스할 수 없습니다. 이 경우 SQL Server 인증을 사용하도록 연결을 변경하려면 구독을 구성한 다음 sp_changesubscription을 실행해야 합니다.

MSreplication_subscriptions(Transact-SQL) 테이블이 구독자에 없는 경우 sp_addpullsubscription이 이 테이블을 만듭니다. 또한 MSreplication_subscriptions(Transact-SQL) 테이블에 행을 추가합니다. 끌어오기 구독의 경우 sp_addsubscription(Transact-SQL)은 반드시 게시자에서 먼저 호출되어야 합니다.

-- 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;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorksReplica]
EXEC sp_addpullsubscription 
  @publisher = @publisher, 
  @publication = @publication, 
  @publisher_db = @publicationDB;

-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent 
  @publisher = @publisher, 
  @publisher_db = @publicationDB, 
  @publication = @publication, 
  @distributor = @publisher, 
  @job_login = $(Login), 
  @job_password = $(Password);
GO

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버만 sp_addpullsubscription을 실행할 수 있습니다.