sp_addmergesubscription(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
밀어넣기 또는 끌어오기 병합 구독을 만듭니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_addmergesubscription
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @subscriber_type = ] N'subscriber_type' ]
[ , [ @subscription_priority = ] subscription_priority ]
[ , [ @sync_type = ] N'sync_type' ]
[ , [ @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' ]
[ , [ @description = ] N'description' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @merge_job_name = ] N'merge_job_name' ]
[ , [ @hostname = ] N'hostname' ]
[ ; ]
인수
[ @publication = ] N'publication'
게시의 이름 @publication 기본값이 없는 sysname입니다. 게시가 이미 있어야 합니다.
[ @subscriber = ] N'subscriber'
구독자의 이름입니다. @subscriber sysname이며 기본값은 .입니다NULL
.
[ @subscriber_db = ] N'subscriber_db'
구독 데이터베이스의 이름입니다. @subscriber_db sysname이며 기본값은 .입니다NULL
.
[ @subscription_type = ] N'subscription_type'
구독 유형입니다. @subscription_type 기본값push
인 nvarchar(15)입니다.
- 이 경우
push
밀어넣기 구독이 추가되고 배포자에 병합 에이전트 추가됩니다. - 이 경우
pull
배포자에서 병합 에이전트 추가하지 않고 끌어오기 구독이 추가됩니다.
참고 항목
익명 구독은 이 저장 프로시저를 사용할 필요가 없습니다.
[ @subscriber_type = ] N'subscriber_type'
구독자의 유형입니다. @subscriber_type nvarchar(15)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
local (기본값) |
게시자에만 알려진 구독자입니다. |
global |
모든 서버에 알려진 구독자입니다. |
SQL Server 2005(9.x) 이상 버전에서는 로컬 구독을 클라이언트 구독이라고 하며 전역 구독을 서버 구독이라고 합니다.
[ @subscription_priority = ] subscription_priority
구독의 우선 순위를 나타내는 숫자입니다. @subscription_priority 기본값NULL
인 실제입니다. 로컬 및 익명 구독의 경우 우선 순위는 .입니다 0.0
. 전역 구독의 경우 우선 순위가 .보다 100.0
작아야 합니다.
[ @sync_type = ] N'sync_type'
구독 동기화 유형입니다. @sync_type 기본값automatic
인 nvarchar(15)입니다.
- 이 경우
automatic
게시된 테이블의 스키마 및 초기 데이터가 먼저 구독자에게 전송됩니다. - 구독
none
자에 게시된 테이블에 대한 스키마 및 초기 데이터가 이미 있는 것으로 간주됩니다. 시스템 테이블 및 데이터는 항상 전송됩니다.
참고 항목
의 값을 none
지정하지 않는 것이 좋습니다.
[ @frequency_type = ] frequency_type
병합 에이전트 실행되는 시기를 나타내는 값입니다. @frequency_type int이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
1 |
한 번 |
4 |
매일 |
8 |
매주 |
10 |
매월 |
20 |
매월 빈도 간격을 기준으로 합니다. |
40 |
SQL Server 에이전트 시작하는 경우 |
NULL (기본값) |
[ @frequency_interval = ] frequency_interval
병합 에이전트 실행되는 날짜 또는 일입니다. @frequency_interval int이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
1 |
일요일 |
2 |
월요일 |
3 |
화요일 |
4 |
수요일 |
5 |
목요일 |
6 |
금요일 |
7 |
토요일 |
8 |
Day |
9 |
평일 |
10 |
주말 |
NULL (기본값) |
[ @frequency_relative_interval = ] frequency_relative_interval
매월 빈도 간격의 예약된 병합 발생입니다. @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_interval 단위입니다. @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 기본값NULL
인 nvarchar(4000)입니다. 이 매개 변수는 출력을 캡처하고 파일에 저장하거나 구성 파일 또는 특성을 지정하는 명령을 추가하는 데 사용됩니다.
[ @description = ] N'description'
이 병합 구독에 대한 간략한 설명입니다. @description 기본값NULL
인 nvarchar(255)입니다. 이 값은 모니터링되는 게시에 대한 구독을 Friendly Name
정렬하는 데 사용할 수 있는 열의 복제 모니터에 의해 표시됩니다.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Microsoft Windows 동기화 관리자를 통해 구독을 동기화할 수 있는지를 지정합니다. @enabled_for_syncmgr 기본값false
인 nvarchar(5)입니다.
- 구독이 Synchronization Manager에 등록되지 않은 경우
false
- 이 경우
true
구독이 Synchronization Manager에 등록되고 SQL Server Management Studio를 시작하지 않고 동기화할 수 있습니다.
[ @offloadagent = ] offloadagent
에이전트를 원격으로 활성화할 수 있도록 지정합니다. @offloadagent 비트이며 기본값은 .입니다0
.
이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다.
[ @offloadserver = ] N'offloadserver'
원격 에이전트 활성화에 사용할 서버의 네트워크 이름을 지정합니다. @offloadserver sysname이며 기본값은 .입니다NULL
.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
대화형 해결을 허용하는 모든 아티클에 대해 충돌을 대화형으로 해결할 수 있습니다. @use_interactive_resolver 기본값false
인 nvarchar(5)입니다.
[ @merge_job_name = ] N'merge_job_name'
이 매개 변수는 더 이상 사용되지 않으며 설정할 수 없습니다. @merge_job_name 기본값NULL
인 sysname입니다.
[ @hostname = ] N'hostname'
매개 변수가 있는 필터의 WHERE 절에서 이 함수를 사용할 때 HOST_NAME 반환된 값을 재정의합니다. @hostname sysname이며 기본값은 .입니다NULL
.
Important
성능상의 이유로 LEFT([MyColumn]) = SUSER_SNAME()
과 같은 매개 변수가 있는 행 필터 절의 열 이름에는 함수를 적용하지 않는 것이 좋습니다. 필터 절에서 HOST_NAME 사용하고 HOST_NAME 값을 재정의하는 경우 CONVERT를 사용하여 데이터 형식을 변환해야 할 수 있습니다. 이 사례에 대한 모범 사례에 대한 자세한 내용은 매개 변수가 있는 필터 - 매개 변수가 있는 행 필터 항목 의 "HOST_NAME() 값 재정의" 섹션을 참조하세요.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_addmergesubscription
는 병합 복제에 사용됩니다.
밀어넣기 구독을 만들기 위해 sysadmin 고정 서버 역할의 멤버가 실행하는 경우 sp_addmergesubscription
병합 에이전트 작업이 암시적으로 만들어지고 SQL Server 에이전트 서비스 계정에서 실행됩니다. sp_addmergepushsubscription_agent 실행하고 @job_login 및 @job_password 다른 에이전트별 Windows 계정의 자격 증명을 지정하는 것이 좋습니다. 자세한 내용은 Replication Agent Security Model을 참조하세요.
예제
-- 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".
DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@job_login = $(Login),
@job_password = $(Password);
GO
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_addmergesubscription
수 있습니다.