다음을 통해 공유


sp_addmergesubscription(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

밀어넣기 또는 끌어오기 병합 구독을 만듭니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

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 기본값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 기본값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수 있습니다.