다음을 통해 공유


sp_addmergepullsubscription_agent(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

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

Transact-SQL 구문 표기 규칙

구문

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @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' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'distributor_password' ]
    [ , [ @encrypted_password = ] encrypted_password ]
    [ , [ @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 ]
    [ , [ @optional_command_line = ] N'optional_command_line' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @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' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

인수

[ @name = ] N'name'

에이전트의 이름입니다. @name sysname이며 기본값은 .입니다NULL.

[ @publisher = ] N'publisher'

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

[ @publisher_db = ] N'publisher_db'

게시자 데이터베이스의 이름입니다. @publisher_db 기본값이 없는 sysname입니다.

[ @publication = ] N'publication'

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

[ @publisher_security_mode = ] publisher_security_mode

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

  • 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 통합 인증을 지정합니다.

Important

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

[ @publisher_login = ] N'publisher_login'

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

[ @publisher_password = ] N'publisher_password'

게시자에 연결할 때 사용되는 암호입니다. @publisher_password sysname이며 기본값은 .입니다NULL.

Important

빈 비밀번호를 사용하지 마세요. 강력한 비밀번호를 사용하세요. 가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.

[ @publisher_encrypted_password = ] publisher_encrypted_password

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

[ @subscriber = ] N'subscriber'

구독자의 이름입니다. @subscriber sysname이며 기본값은 .입니다NULL.

[ @subscriber_db = ] N'subscriber_db'

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

[ @subscriber_security_mode = ] subscriber_security_mode

동기화할 때 구독자에 연결할 때 사용할 보안 모드입니다. @subscriber_security_mode 기본값1int입니다. 이면 0SQL Server 인증을 지정합니다. 이면 1Windows 인증을 지정합니다.

참고 항목

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

[ @subscriber_login = ] N'subscriber_login'

동기화할 때 구독자에 연결할 때 사용할 구독자 로그인입니다. @subscriber_login sysname이며 기본값은 .입니다NULL. subscriber_security_mode 설정된 0경우 @subscriber_login 필요합니다.

참고 항목

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

[ @subscriber_password = ] N'subscriber_password'

SQL Server 인증에 대한 구독자 암호입니다. @subscriber_password 기본값NULL인 sysname입니다. @subscriber_security_mode 설정된 0경우 @subscriber_password 필요합니다.

참고 항목

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

[ @distributor = ] N'distributor'

배포자의 이름입니다. @distributor sysname이며 기본값은 @publisher; 즉, 게시자도 배포자입니다.

[ @distributor_security_mode = ] distributor_security_mode

동기화할 때 배포자에 연결할 때 사용할 보안 모드입니다. @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_password sysname이며 기본값은 .입니다NULL. @distributor_security_mode 설정된 0경우 @distributor_password 필요합니다.

Important

빈 비밀번호를 사용하지 마세요. 강력한 비밀번호를 사용하세요. 가능한 경우 런타임 시 사용자에게 보안 자격 증명을 입력하라는 메시지가 표시됩니다. 스크립트 파일에 자격 증명을 저장하는 경우에는 무단으로 액세스하지 못하도록 파일에 보안을 설정해야 합니다.

[ @encrypted_password = ] encrypted_password

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

[ @frequency_type = ] frequency_type

병합 에이전트 실행되는 시기를 나타내는 값입니다. @frequency_type int이며 이러한 값 중 하나일 수 있습니다.

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

참고 항목

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

[ @frequency_interval = ] frequency_interval

병합 에이전트 실행되는 날짜 또는 일입니다. @frequency_interval 기본값NULL인 int이며 이러한 값 중 하나일 수 있습니다.

설명
1 일요일
2 월요일
3 화요일
4 수요일
5 목요일
6 금요일
7 토요일
8 Day
9 평일
10 주말
NULL(기본값)

[ @frequency_relative_interval = ] frequency_relative_interval

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

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

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

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

[ @frequency_subday = ] frequency_subday

정의된 기간 동안 다시 예약하는 빈도입니다. @frequency_subday int이며 이러한 값 중 하나일 수 있습니다.

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

[ @frequency_subday_interval = ] frequency_subday_interval

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

[ @active_start_time_of_day = ] active_start_time_of_day

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

[ @active_end_time_of_day = ] active_end_time_of_day

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

[ @active_start_date = ] active_start_date

병합 에이전트 처음 예약된 날짜로 형식이 지정됩니다yyyyMMdd. @active_start_date 기본값NULLint입니다.

[ @active_end_date = ] active_end_date

병합 에이전트 예약이 중지된 날짜로, 형식은 다음과 같습니다yyyyMMdd. @active_end_date 기본값NULLint입니다.

[ @optional_command_line = ] N'optional_command_line'

병합 에이전트 제공되는 선택적 명령 프롬프트입니다. @optional_command_line nvarchar(255)이며 기본값은 빈 문자열입니다.

병합 에이전트에 추가 매개 변수를 제공하는 데 사용할 수 있으며 다음 예에서는 기본 쿼리 제한 시간을 600초로 늘립니다.

@optional_command_line = N'-QueryTimeOut 600'

[ @merge_jobid = ] merge_jobid OUTPUT

작업 ID의 출력 매개 변수입니다. @merge_jobid 기본값NULL인 이진(16) 형식의 OUTPUT 매개 변수입니다.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Windows 동기화 관리자를 통해 구독을 동기화할 수 있는지 여부를 지정합니다. @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_snapshot_folder'

스냅샷 파일을 선택할 위치를 지정합니다. @alt_snapshot_folder 기본값NULL인 nvarchar(255)입니다. 이 경우 NULL스냅샷 파일은 게시자가 지정한 기본 위치에서 선택됩니다.

[ @working_directory = ] N'working_directory'

FTP를 사용하여 스냅샷 파일을 전송할 때 게시에 대한 데이터 및 스키마 파일을 일시적으로 저장하는 데 사용되는 작업 디렉터리의 이름입니다. @working_directory 기본값NULL인 nvarchar(255)입니다.

[ @use_ftp = ] N'use_ftp'

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

[ @reserved = ] N'reserved'

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

[ @use_interactive_resolver = ] N'use_interactive_resolver'

대화형 해결 프로그램을 사용하여 대화형 해결을 허용하는 모든 아티클의 충돌을 해결합니다. @use_interactive_resolver 기본값false인 nvarchar(5)입니다.

[ @offloadagent = ] N'offloadagent'

참고 항목

이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다. remote_agent_activation 다른 값 false 으로 설정하면 오류가 발생합니다.

[ @offloadserver = ] N'offloadserver'

참고 항목

이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다. remote_agent_server_name NULL이 아닌 값으로 설정하면 오류가 발생합니다.

[ @job_name = ] N'job_name'

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

[ @dynamic_snapshot_location = ] N'dynamic_snapshot_location'

필터링된 데이터 스냅샷을 사용할 경우 스냅샷 파일을 읽을 폴더의 경로입니다. @dynamic_snapshot_location 기본값NULL인 nvarchar(260)입니다. 자세한 내용은 매개 변수가 있는 필터 - 매개 변수가 있는 행 필터를 참조하세요.

[ @use_web_sync = ] use_web_sync

웹 동기화가 사용하도록 설정되어 있음을 나타냅니다. @use_web_sync 비트이며 기본값은 .입니다0. 1 는 HTTP를 사용하여 인터넷을 통해 끌어오기 구독을 동기화할 수 있도록 지정합니다.

[ @internet_url = ] N'internet_url'

웹 동기화를 위한 복제 수신기(REPLISAPI.DLL)의 위치입니다. @internet_url 기본값NULL인 nvarchar(260)입니다. @internet_url 형식http://server.domain.com/directory/replisapi.dll의 정규화된 URL입니다. 서버가 포트 80 이외의 포트에서 수신 대기하도록 구성된 경우 포트 번호도 포트를 나타내는 형식 http://server.domain.com:<portnumber>/directory/replisapi.dll<portnumber> 으로 제공되어야 합니다.

[ @internet_login = ] N'internet_login'

HTTP 기본 인증을 사용하여 웹 동기화를 호스팅하는 웹 서버에 연결할 때 병합 에이전트 사용하는 로그인입니다. @internet_login sysname이며 기본값은 .입니다NULL.

[ @internet_password = ] N'internet_password'

HTTP 기본 인증을 사용하여 웹 동기화를 호스팅하는 웹 서버에 연결할 때 병합 에이전트 사용하는 암호입니다. @internet_password 기본값NULL인 nvarchar(524)입니다.

Important

빈 비밀번호를 사용하지 마세요. 강력한 비밀번호를 사용하세요.

[ @internet_security_mode = ] internet_security_mode

HTTPS를 사용하여 웹 동기화 중에 웹 서버에 연결할 때 병합 에이전트 사용하는 인증 방법입니다. @internet_security_mode int이며 이러한 값 중 하나일 수 있습니다.

설명
0 기본 인증이 사용됩니다.
1(기본값) Windows 통합 인증이 사용됩니다.

참고 항목

웹 동기화와 함께 기본 인증을 사용하는 것이 좋습니다. 웹 동기화를 사용하려면 웹 서버에 TLS 연결을 설정해야 합니다. 자세한 내용은 Configure Web Synchronization을 참조하세요.

[ @internet_timeout = ] internet_timeout

웹 동기화 요청이 만료되기 전의 시간(초)입니다. @internet_timeout int이며 기본값은 초입니다300.

[ @hostname = ] N'hostname'

매개 변수가 있는 필터의 HOST_NAME() 절에서 이 함수를 WHERE 사용하는 경우의 값을 재정의합니다. @hostname sysname이며 기본값은 .입니다NULL.

[ @job_login = ] N'job_login'

에이전트가 실행되는 Windows 계정에 대한 로그인입니다. @job_login 기본값NULL인 nvarchar(257)입니다. 이 Windows 계정은 항상 구독자에 대한 에이전트 연결 및 Windows 통합 인증을 사용할 때 배포자 및 게시자에 대한 연결에 사용됩니다.

[ @job_password = ] N'job_password'

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

주의

스크립트 파일에 인증 정보를 저장하지 마세요. 최상의 보안을 위해 런타임에 로그인 이름 및 암호를 제공해야 합니다.

반환 코드 값

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

설명

sp_addmergepullsubscription_agent는 병합 복제에 사용되며 sp_addpullsubscription_agent 유사한 기능을 사용합니다.

실행할 때 보안 설정을 올바르게 지정하는 sp_addmergepullsubscription_agent방법에 대한 예제는 끌어오기 구독 만들기를 참조 하세요.

예제


-- 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 @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
SET @hostname = N'adventure-works\david8';

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
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),
  @hostname = @hostname;
GO

사용 권한

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