sp_addmergesubscription(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이면 구독이 동기화 관리자에 등록되며 Microsoft SQL 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 매개 변수는 사용되지 않으며 설정할 수 없습니다. 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'AdventureWorks2008R2Replica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
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을 실행할 수 있습니다.