다음을 통해 공유


sp_addpullsubscription(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

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

인수

[ @publisher = ] N'publisher'

게시자의 이름입니다. @publisher 기본값이 없는 sysname입니다.

참고 항목

서버 이름은 기본 인스턴스 또는 <Hostname>\<InstanceName>,<PortNumber> 명명된 <Hostname>,<PortNumber> 인스턴스에 대해 지정할 수 있습니다. SQL Server가 사용자 지정 포트를 사용하여 Linux 또는 Windows에 배포되고 브라우저 서비스를 사용할 수 없는 경우 연결의 포트 번호를 지정합니다. 원격 배포자에 대한 사용자 지정 포트 번호의 사용은 SQL Server 2019(15.x) 이상 버전에 적용됩니다.

[ @publisher_db = ] N'publisher_db'

게시자 데이터베이스의 이름입니다. @publisher_db sysname이며 기본값은 .입니다NULL. @publisher_db Oracle 게시자에 의해 무시됩니다.

[ @publication = ] N'publication'

게시의 이름 @publication 기본값이 없는 sysname입니다.

[ @independent_agent = ] N'independent_agent'

이 게시에 대한 독립 실행형 배포 에이전트 있는지를 지정합니다. @independent_agent 기본값true인 nvarchar(5)입니다.

  • 이 경우 true이 게시에 대한 독립 실행형 배포 에이전트 있습니다.
  • 이 경우 false각 Publisher 데이터베이스/구독자 데이터베이스 쌍에 대해 하나의 배포 에이전트 있습니다.

@independent_agent 게시의 속성이며 게시자와 동일한 값을 가져야 합니다.

[ @subscription_type = ] N'subscription_type'

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

[ @description = ] N'description'

게시에 대한 설명입니다. @description 기본값NULL인 nvarchar(100)입니다.

[ @update_mode = ] N'update_mode'

업데이트 유형. @update_mode nvarchar(30)이며 다음 값 중 하나일 수 있습니다.

설명
read only(기본값) 구독이 읽기 전용입니다. 구독자의 변경 내용은 게시자에게 다시 전송되지 않습니다. 구독자에서 업데이트가 이루어지지 않는 경우 사용해야 합니다.
synctran 즉시 업데이트 구독에 대한 지원을 설정합니다.
queued tran 지연 업데이트에 대한 구독을 사용하도록 설정합니다. 구독자에서 데이터를 수정하고 큐에 저장한 다음 게시자에 전파할 수 있습니다.
failover 지연 업데이트를 장애 조치(failover)로 즉시 업데이트하기 위해 구독을 사용하도록 설정합니다. 구독자에서 데이터를 수정하고 게시자에 즉시 전파할 수 있습니다. 게시자와 구독자가 연결되지 않은 경우 구독자와 게시자가 다시 연결될 때까지 구독자에서 수정한 데이터를 큐에 저장할 수 있습니다.
queued failover 참고: Oracle 게시자에 대해서는 지원되지 않습니다.

구독을 지연 업데이트 구독으로 설정하며 즉시 업데이트 모드로 변경할 수 있는 기능을 포함합니다. 구독자와 게시자 간에 연결이 설정될 때까지 구독자에서 데이터를 수정하고 큐에 저장할 수 있습니다. 연속 연결이 설정되면 업데이트 모드를 즉시 업데이트로 변경할 수 있습니다.

[ @immediate_sync = ] immediate_sync

스냅샷 에이전트 실행할 때마다 동기화 파일을 만들거나 다시 만들지 여부를 지정합니다. @immediate_sync 비트이며, 기본값1은 sp_addpublication @immediate_sync 동일한 값으로 설정해야 합니다. @immediate_sync 게시의 속성이며 게시자와 동일한 값을 가져야 합니다.

반환 코드 값

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

설명

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

Important

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

MSreplication_subscriptions 테이블이 구독자에 sp_addpullsubscription 없으면 만듭니다. 또한 MSreplication_subscriptions 테이블에 행을 추가합니다. 끌어오기 구독의 경우 먼저 게시자에서 sp_addsubscription 호출해야 합니다.

예제

-- 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'AdventureWorks2022';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2022Replica]
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수 있습니다.