sp_addpullsubscription_agent(Transact-SQL)

적용 대상:SQL ServerAzure SQL Managed Instance

끌어오기 구독을 트랜잭션 게시에 동기화하는 데 사용되는 새 예약된 에이전트 작업을 추가합니다. 이 저장 프로시저는 구독 데이터베이스의 구독자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_addpullsubscription_agent
    [ @publisher = ] N'publisher'
    [ , [ @publisher_db = ] N'publisher_db' ]
    , [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distribution_db = ] N'distribution_db' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @frequency_type = ] frequency_type ]
    [ , [ @frequency_interval = ] frequency_interval ]
    [ , [ @frequency_relative_interval = ] frequency_relative_interval ]
    [ , [ @frequency_recurrence_factor = ] frequency_recurrence_factor ]
    [ , [ @frequency_subday = ] frequency_subday ]
    [ , [ @frequency_subday_interval = ] frequency_subday_interval ]
    [ , [ @active_start_time_of_day = ] active_start_time_of_day ]
    [ , [ @active_end_time_of_day = ] active_end_time_of_day ]
    [ , [ @active_start_date = ] active_start_date ]
    [ , [ @active_end_date = ] active_end_date ]
    [ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
    [ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @publication_type = ] publication_type ]
    [ , [ @dts_package_name = ] N'dts_package_name' ]
    [ , [ @dts_package_password = ] N'dts_package_password' ]
    [ , [ @dts_package_location = ] N'dts_package_location' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

인수

[ @publisher = ] N'publisher'

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

참고 항목

서버 이름은 .로 <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입니다.

[ @subscriber = ] N'subscriber'

구독자 데이터베이스가 가용성 그룹에 있는 경우 구독자 인스턴스의 이름 또는 AG 수신기의 이름입니다. @subscriber sysname이며 기본값은 .입니다NULL.

참고 항목

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

AG의 일부인 구독자에 대해 실행하는 sp_addpullsubscription_agent 경우 @subscriber AG 수신기 이름으로 설정합니다. SQL Server 2016(13.x) 및 이전 버전 또는 CU 16 이전에 SQL Server 2017(14.x)을 실행하는 경우 저장 프로시저는 오류를 반환하지 않고 실행되지만 복제 배포 에이전트 @subscriber 매개 변수는 AG 수신기 이름을 참조하지 않습니다. 매개 변수는 명령이 실행되는 구독자 서버 이름으로 만들어집니다. 이 문제를 수정하려면 배포 에이전트 작업@subscriber 매개 변수를 AG 수신기 이름 값으로 수동으로 업데이트합니다.

[ @subscriber_db = ] N'subscriber_db'

구독 데이터베이스의 이름입니다. @subscriber_db sysname이며 기본값은 .입니다NULL.

참고 항목

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

[ @subscriber_security_mode = ] subscriber_security_mode

동기화할 때 구독자에 연결할 때 사용할 보안 모드입니다. @subscriber_security_mode 기본값NULLint입니다.

  • 0 은 SQL Server 인증을 지정합니다.
  • 1는 Windows 인증 지정합니다.

참고 항목

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본. 배포 에이전트는 항상 Windows 인증을 사용하여 로컬 구독자에 연결합니다. 이 매개 변수에 대해 값이 아닌 NULL 값이 지정되었거나 1 지정되면 경고 메시지가 반환됩니다.

[ @subscriber_login = ] N'subscriber_login'

동기화할 때 구독자에 연결할 때 사용할 구독자 로그인입니다. @subscriber_login sysname이며 기본값은 .입니다NULL.

참고 항목

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본. 이 매개 변수에 값을 지정하면 경고 메시지가 반환되지만 값은 무시됩니다.

[ @subscriber_password = ] N'subscriber_password'

구독자 암호입니다. subscriber_security_mode 설정된 0경우 subscriber_password 필요합니다. @subscriber_password 기본값NULL인 sysname입니다. 구독자 암호가 사용되는 경우 자동으로 암호화됩니다.

참고 항목

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본. 이 매개 변수에 값을 지정하면 경고 메시지가 반환되지만 값은 무시됩니다.

[ @distributor = ] N'distributor'

배포자의 이름입니다. @distributor sysname이며 기본값은 @publisher 지정합니다.

[ @distribution_db = ] N'distribution_db'

배포 데이터베이스의 이름입니다. @distribution_db sysname이며 기본값은 .입니다NULL.

[ @distributor_security_mode = ] distributor_security_mode

참고 항목

Microsoft Entra ID 는 이전에 Azure AD(Azure Active Directory)라고 했습니다.

동기화할 때 배포자에 연결할 때 사용할 보안 모드입니다. @distributor_security_mode 기본값1인 int입니다. 다음 값은 보안 모드를 정의합니다.

  • 0 는 SQL Server 인증을 지정합니다.
  • 1는 Windows 인증 지정합니다.
  • 2 는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 암호 인증을 지정합니다.
  • 3 는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 통합 인증을 지정합니다.
  • 4 는 SQL Server 2022(16.x) CU 6부터 Microsoft Entra 토큰 인증을 지정합니다.

Important

가능하면 Windows 인증을 사용하세요.

[ @distributor_login = ] N'distributor_login'

동기화할 때 배포자에 연결할 때 사용할 배포자 로그인입니다. @distributor_login 기본값NULL인 sysname입니다. @distributor_security_mode 설정된 0경우 @distributor_login 필요합니다.

[ @distributor_password = ] N'distributor_password'

배포자 암호입니다. distributor_security_mode 설정된 0경우 distributor_password 필요합니다. @distributor_password sysname이며 기본값은 .입니다NULL.

Important

빈 암호를 사용하지 마세요. 강력한 암호를 사용하세요. 가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장해야 하는 경우 무단 액세스를 방지하기 위해 파일을 보호해야 합니다.

[ @optional_command_line = ] N'optional_command_line'

배포 에이전트 제공된 선택적 명령 프롬프트입니다. 예를 들어 -DefinitionFile C:\Distdef.txt 또는 -CommitBatchSize 10입니다. @optional_command_line nvarchar(4000)이며 기본값은 빈 문자열입니다.

[ @frequency_type = ] frequency_type

배포 에이전트 예약할 빈도입니다. @frequency_type int이며 다음 값 중 하나일 수 있습니다.

설명
1 한 번
2 (기본값) 주문형
4 매일
8 매주
16 매월
32 월별 상대
64 자동 시작
128 되풀이

참고 항목

값을 64 지정하면 배포 에이전트 연속 모드에서 실행됩니다. 에이전트의 -Continuous 매개 변수 설정에 해당합니다. 자세한 내용은 복제 배포 에이전트 참조하세요.

[ @frequency_interval = ] frequency_interval

@frequency_type 설정된 빈도에 적용할 값입니다. @frequency_interval 기본값1int입니다.

[ @frequency_relative_interval = ] frequency_relative_interval

배포 에이전트 날짜입니다. 이 매개 변수는 @frequency_type (월별 상대)로 설정 될 32사용 됩니다. @frequency_relative_interval int이며 다음 값 중 하나일 수 있습니다.

설명
1(기본값) 첫 번째
2 두 번째
4 세 번째
8 네 번째
16 마지막

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

@frequency_type 사용되는 되풀이 요소입니다. @frequency_recurrence_factor 기본값1인 int입니다.

[ @frequency_subday = ] frequency_subday

정의된 기간 동안 일정 조정 빈도를 지정합니다. @frequency_subday int이며 다음 값 중 하나일 수 있습니다.

설명
1(기본값) 한 번
2 둘째
4 Minute
8 Hour

[ @frequency_subday_interval = ] frequency_subday_interval

@frequency_subday 간격입니다. @frequency_subday_interval 기본값1int입니다.

[ @active_start_time_of_day = ] active_start_time_of_day

배포 에이전트 처음 예약되고 형식HHmmss이 지정된 하루 중 시간입니다. @active_start_time_of_day 기본값0인 int입니다.

[ @active_end_time_of_day = ] active_end_time_of_day

배포 에이전트 예약이 중지되고 형식이 HHmmss지정된 하루 중 시간입니다. @active_end_time_of_day 기본값0인 int입니다.

[ @active_start_date = ] active_start_date

배포 에이전트 처음 예약된 날짜로 형식이 지정됩니다yyyyMMdd. @active_start_date 기본값0int입니다.

[ @active_end_date = ] active_end_date

배포 에이전트 예약이 중지되는 날짜로 yyyyMMdd형식이 지정됩니다. @active_end_date 기본값0int입니다.

[ @distribution_jobid = ] distribution_jobid OUTPUT

이 작업에 대한 배포 에이전트 ID입니다. @distribution_jobid 기본값NULL인 이진(16) 형식의 OUTPUT 매개 변수입니다.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password 비트이며 기본값은 .입니다0.

참고 항목

@encrypted_distributor_password 설정은 더 이상 지원되지 않습니다. 이 비트 매개 변수 1 를 설정하려고 하면 오류가 발생합니다.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Microsoft Synchronization Manager를 통해 구독을 동기화할 수 있는지 여부를 지정합니다. @enabled_for_syncmgr 기본값false인 nvarchar(5)입니다.

  • 구독이 Synchronization Manager에 등록되지 않은 경우 false
  • 이 경우 true구독이 Synchronization Manager에 등록되고 SQL Server Management Studio를 시작하지 않고 동기화할 수 있습니다.

[ @ftp_address = ] N'ftp_address'

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

[ @ftp_port = ] ftp_port

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

[ @ftp_login = ] N'ftp_login'

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

[ @ftp_password = ] N'ftp_password'

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본.

[ @alt_snapshot_folder = ] N'alt_스냅샷_folder'

스냅샷 대체 폴더의 위치를 지정합니다. @alt_스냅샷_folder 기본값NULL인 nvarchar(255)입니다.

[ @working_directory = ] N'working_directory'

게시할 데이터 및 스키마 파일을 저장하기 위해 사용하는 작업 디렉터리의 이름입니다. @working_directory 기본값NULL인 nvarchar(255)입니다. 이름은 UNC 형식으로 지정해야 합니다.

[ @use_ftp = ] N'use_ftp'

일반 프로토콜 대신 FTP를 사용하여 스냅샷 검색하도록 지정합니다. @use_ftp 기본값false인 nvarchar(5)입니다.

[ @publication_type = ] publication_type

게시의 복제본(replica)tion 형식을 지정합니다. @publication_type 기본값0인 tinyint입니다.

  • 이면 0게시가 트랜잭션 형식입니다.
  • 이면 1게시가 스냅샷 형식입니다.
  • 이면 2게시가 병합 형식입니다.

[ @dts_package_name = ] N'dts_package_name'

DTS 패키지의 이름을 지정합니다. @dts_package_name sysname이며 기본값은 .입니다NULL. 예를 들어 DTSPub_Package의 패키지를 지정하려면 매개 변수가 @dts_package_name = N'DTSPub_Package'여야 합니다.

[ @dts_package_password = ] N'dts_package_password'

패키지에 암호가 있는 경우 암호를 지정합니다. @dts_package_password sysname이며, 기본값NULL은 암호가 패키지에 있지 않음을 의미합니다.

참고 항목

@dts_package_name 지정한 경우 암호를 지정해야 합니다.

[ @dts_package_location = ] N'dts_package_location'

패키지 위치를 지정합니다. @dts_package_location 기본값subscriber인 nvarchar(12)입니다. 패키지의 위치는 일 수 있습니다distributor.subscriber

[ @reserved = ] N'reserved'

정보를 제공하기 위해서만 확인됩니다. 지원 안 됨 향후 호환성은 보장되지 않습니다.

[ @offloadagent = ] N'offloadagent'

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본. 이 매개 변수에 값을 지정하면 경고 메시지가 반환되지만 값은 무시됩니다. @offloadagent 다른 값 false 으로 설정하면 오류가 발생합니다.

[ @offloadserver = ] N'offloadserver'

이 매개 변수는 더 이상 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 기본. 이 매개 변수에 값을 지정하면 경고 메시지가 반환되지만 값은 무시됩니다. @offloadserver 다른 값 false 으로 설정하면 오류가 발생합니다.

[ @job_name = ] N'job_name'

기존 에이전트 작업의 이름입니다. @job_name sysname이며 기본값은 .입니다NULL. 이 매개 변수는 새로 만든 작업(기본값) 대신 기존 작업을 사용하여 구독을 동기화할 때만 지정됩니다. sysadmin 고정 서버 역할의 멤버가 아닌 경우 @job_name 지정할 @job_login 지정하고 @job_password 합니다.

[ @job_login = ] N'job_login'

에이전트가 실행되는 Windows 계정에 대한 로그인입니다. @job_login nvarchar(257)이며 기본값은 없습니다. 이 Windows 계정은 항상 구독자에 대한 에이전트 연결에 사용됩니다.

[ @job_password = ] N'job_password'

에이전트가 실행되는 Windows 계정의 암호입니다. @job_password 기본값이 없는 sysname입니다.

Important

빈 암호를 사용하지 마세요. 강력한 암호를 사용하세요. 가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장해야 하는 경우 무단 액세스를 방지하기 위해 파일을 보호해야 합니다.

반환 코드 값

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

설명

sp_addpullsubscription_agent는 스냅샷 복제본(replica)tion 및 트랜잭션 복제본(replica)에 사용됩니다.

예제

-- 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_agent수 있습니다.