적용 대상: SQL Server
Azure SQL Managed Instance
끌어오기 구독의 동기화를 예약하는 데 사용되는 새 에이전트 작업을 병합 게시에 추가합니다. 이 저장 프로시저는 구독 데이터베이스의 구독자에서 실행됩니다.
구문
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 기본값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 통합 인증을 지정합니다.
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 기본값1인 int입니다. 이면 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 기본값NULL인 int입니다.
[ @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 기본값NULL인 int입니다.
[ @active_end_date = ] active_end_date
병합 에이전트 예약이 중지된 날짜로, 형식은 다음과 같습니다yyyyMMdd. @active_end_date 기본값NULL인 int입니다.
[ @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수 있습니다.