sp_addmergepullsubscription_agent(Transact-SQL)
적용 대상: 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입니다. 이면 0
SQL Server 인증을 지정합니다. 이면 1
Windows 인증을 지정합니다.
참고 항목
이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다. 이 매개 변수에 값을 지정하면 경고 메시지가 반환되지만 값은 무시됩니다.
[ @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
수 있습니다.