다음을 통해 공유


sp_addmergesubscription(Transact-SQL)

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

항목 링크 아이콘Transact-SQL 구문 표기 규칙

구문

sp_addmergesubscription [ @publication= ] 'publication'
    [ , [ @subscriber = ] 'subscriber' ]
    [ , [ @subscriber_db= ] 'subscriber_db' ]
    [ , [ @subscription_type= ] 'subscription_type' ]
    [ , [ @subscriber_type= ] 'subscriber_type' ]
    [ , [ @subscription_priority= ] subscription_priority ]
    [ , [ @sync_type= ] '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= ] 'optional_command_line' ]
    [ , [ @description= ] 'description' ]
    [ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
    [ , [ @offloadagent= ] remote_agent_activation]
    [ , [ @offloadserver= ] 'remote_agent_server_name' ]
    [ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
    [ , [ @merge_job_name= ] 'merge_job_name' ]
    [ , [ @hostname = ] 'hostname'

인수

  • [ @publication = ] 'publication'
    게시의 이름입니다. publication은 sysname이며 기본값은 없습니다. 반드시 게시가 이미 존재해야 합니다.

  • [ @subscriber=] 'subscriber'
    구독자의 이름입니다. subscriber는 sysname이며 기본값은 NULL입니다.

  • [ @subscriber_db=] 'subscriber_db'
    구독 데이터베이스의 이름입니다. subscriber_db는 sysname이며 기본값은 NULL입니다.

  • [ @subscription_type=] 'subscription_type'
    구독의 유형입니다. subscription_type은 nvarchar(15)이며 기본값은 PUSH입니다. push인 경우 밀어넣기 구독이 추가되고 병합 에이전트가 배포자에 추가됩니다. pull인 경우 끌어오기 구독이 추가되고 병합 에이전트는 배포자에 추가되지 않습니다.

    [!참고]

    익명 구독은 이 저장 프로시저를 사용할 필요가 없습니다.

  • [ @subscriber_type=] 'subscriber_type'
    구독자의 유형입니다. subscriber_type은 nvarchar(15)이며 다음 값 중 하나일 수 있습니다.

    설명

    local(기본값)

    게시자에게만 알려진 구독자입니다.

    global

    모든 서버에 알려진 구독자입니다.

    SQL Server 2005 이상 버전에서 로컬 구독은 클라이언트 구독이라고 하며 전역 구독은 서버 구독이라고 합니다. 자세한 내용은 병합 복제의 충돌 감지 및 해결 방법의 "구독 유형" 섹션을 참조하십시오.

  • [ @subscription_priority=] subscription_priority
    구독의 우선 순위를 나타내는 숫자입니다. subscription_priority는 real이며 기본값은 NULL입니다. 로컬 및 익명 구독의 경우에는 우선 순위가 0.0입니다. 전역 구독의 경우에는 우선 순위가 100.0 미만이어야 합니다.

  • [ @sync_type=] 'sync_type'
    구독 동기화 유형입니다. sync_type은 nvarchar(15)이며 기본값은 automatic입니다. automatic 또는 none이 될 수 있습니다. automatic인 경우 게시된 테이블의 스키마 및 초기 데이터가 먼저 구독자에게 전송됩니다. none인 경우 구독자가 게시된 테이블의 스키마 및 초기 데이터를 이미 가지고 있다고 가정합니다. 시스템 테이블 및 데이터는 항상 전송됩니다.

    [!참고]

    none 값은 지정하지 않는 것이 좋습니다. 자세한 내용은 스냅숏 없이 병합 구독 초기화를 참조하십시오.

  • [ @frequency_type = ] frequency_type
    병합 에이전트가 실행될 시기를 나타내는 값입니다. frequency_type은 int이며 다음 값 중 하나일 수 있습니다.

    설명

    1

    한 번

    4

    매일

    8

    매주

    10

    매월

    20

    매월(frequency_interval에 상대적임)

    40

    SQL Server 에이전트가 시작될 때

    NULL(기본값)

     

  • [ @frequency_interval = ] frequency_interval
    병합 에이전트가 실행되는 요일입니다. frequency_interval은 int이며 다음 값 중 하나일 수 있습니다.

    설명

    1

    일요일

    2

    월요일

    3

    화요일

    4

    수요일

    5

    목요일

    6

    금요일

    7

    토요일

    8

    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는 int이며 기본값은 NULL입니다.

  • [ @frequency_subday = ]frequency_subday
    frequency_subday_interval의 단위입니다. frequency_subday는 int이며 다음 값 중 하나일 수 있습니다.

    설명

    1

    한 번

    2

    4

    8

    시간

    NULL(기본값)

     

  • [ @frequency_subday_interval = ]frequency_subday_interval
    각 병합 간에 frequency_subday가 발생하는 빈도입니다. frequency_subday_interval은 int이며 기본값은 NULL입니다.

  • [ @active_start_time_of_day = ] active_start_time_of_day
    하루 중에서 병합 에이전트가 처음으로 실행되도록 예약된 시간이며 HHMMSS 형식으로 표시됩니다. active_start_time_of_day는 int이며 기본값은 NULL입니다.

  • [ @active_end_time_of_day = ] active_end_time_of_day
    하루 중에서 병합 에이전트가 마지막으로 실행되도록 예약된 시간이며 HHMMSS 형식으로 표시됩니다. active_end_time_of_day는 int이며 기본값은 NULL입니다.

  • [ @active_start_date = ] active_start_date
    병합 에이전트가 처음으로 실행되도록 예약된 날짜이며 YYYYMMDD 형식으로 표시됩니다. active_start_date는 int이며 기본값은 NULL입니다.

  • [ @active_end_date = ] active_end_date
    병합 에이전트가 마지막으로 실행되도록 예약된 날짜이며 YYYYMMDD 형식으로 표시됩니다. active_end_date는 int이며 기본값은 NULL입니다.

  • [ @optional_command_line=] 'optional_command_line'
    실행할 선택적인 명령 프롬프트입니다. optional_command_line은 nvarchar(4000)이며 기본값은 NULL입니다. 이 매개 변수는 출력을 캡처하여 파일로 저장하는 명령을 추가하거나 구성 파일 또는 특성을 지정하는 데 사용됩니다.

  • [ @description=] 'description'
    이 병합 구독에 대한 간단한 설명입니다. description은 nvarchar(255)이며 기본값은 NULL입니다. 이 값은 복제 모니터에서 이름 열에 표시되며 모니터링되는 게시에 대한 구독을 정렬하는 데 사용할 수 있습니다.

  • [ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
    Microsoft Windows 동기화 관리자를 통해 구독을 동기화할 수 있는지 여부를 지정합니다. enabled_for_syncmgr은 nvarchar(5)이며 기본값은 FALSE입니다. false인 경우 구독이 동기화 관리자에 등록되지 않습니다. true이면 구독이 동기화 관리자에 등록되며 MicrosoftSQL Server Management Studio를 시작하지 않고 구독을 동기화할 수 있습니다.

  • [ @offloadagent= ] remote_agent_activation
    에이전트를 원격으로 활성화할 수 있도록 지정합니다. remote_agent_activation은 bit이며 기본값은 0입니다.

    [!참고]

    이 매개 변수는 더 이상 사용되지 않으며 이전 버전의 스크립트와의 호환성을 위해서만 유지 관리됩니다.

  • [ @offloadserver= ] 'remote_agent_server_name'
    원격 에이전트 활성화에 사용할 서버의 네트워크 이름을 지정합니다. remote_agent_server_name은 sysname이며 기본값은 NULL입니다.

  • [ @use_interactive_resolver= ] 'use_interactive_resolver'
    대화형 해결을 허용하는 모든 아티클에 대해 충돌을 대화형으로 해결하도록 허용합니다. use_interactive_resolver는 nvarchar(5)이며 기본값은 FALSE입니다.

  • [ @merge_job_name= ] 'merge_job_name'
    해당 구독에 대해 추가된 병합 에이전트 작업의 이름입니다. merge_job_name은 sysname이며 기본값은 NULL입니다. 이 매개 변수를 사용하면 나중에 해당 작업을 관리할 수 있도록 병합 에이전트 작업 이름을 제공할 수 있습니다.

  • [ @hostname= ] 'hostname'
    이 함수가 매개 변수가 있는 필터의 WHERE 절에 사용되는 경우 HOST_NAME에서 반환하는 값을 재정의합니다. Hostname 은 sysname이며 기본값은 NULL입니다.

    중요 정보중요

    성능상의 이유로 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 계정의 자격 증명을 지정하는 것이 좋습니다. 자세한 내용은 복제 에이전트 보안 모델을 참조하십시오.

-- 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 [AdventureWorks]
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을 실행할 수 있습니다.