sp_addpullsubscription(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
스냅샷 또는 트랜잭션 게시에 끌어오기 구독을 추가합니다. 이 저장 프로시저는 끌어오기 구독을 만들 구독자의 데이터베이스에서 실행됩니다.
구문
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
수 있습니다.