sp_add_targetservergroup(Transact-SQL)
기존 병합 게시에 아티클을 추가합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_addmergearticle [ @publication = ] 'publication'
, [ @article = ] 'article'
, [ @source_object = ] 'source_object'
[ , [ @type = ] 'type' ]
[ , [ @description = ] 'description' ]
[ , [ @column_tracking = ] 'column_tracking' ]
[ , [ @status = ] 'status' ]
[ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ]
[ , [ @creation_script = ] 'creation_script' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @subset_filterclause = ] 'subset_filterclause' ]
[ , [ @article_resolver = ] 'article_resolver' ]
[ , [ @resolver_info = ] 'resolver_info' ]
[ , [ @source_owner = ] 'source_owner' ]
[ , [ @destination_owner = ] 'destination_owner' ]
[ , [ @vertical_partition = ] 'vertical_partition' ]
[ , [ @auto_identity_range = ] 'auto_identity_range' ]
[ , [ @pub_identity_range = ] pub_identity_range ]
[ , [ @identity_range = ] identity_range ]
[ , [ @threshold = ] threshold ]
[ , [ @verify_resolver_signature = ] verify_resolver_signature ]
[ , [ @destination_object = ] 'destination_object' ]
[ , [ @allow_interactive_resolver = ] 'allow_interactive_resolver' ]
[ , [ @fast_multicol_updateproc = ] 'fast_multicol_updateproc' ]
[ , [ @check_permissions = ] check_permissions ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @published_in_tran_pub = ] 'published_in_tran_pub' ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @logical_record_level_conflict_detection = ] 'logical_record_level_conflict_detection' ]
[ , [ @logical_record_level_conflict_resolution = ] 'logical_record_level_conflict_resolution' ]
[ , [ @partition_options = ] partition_options ]
[ , [ @processing_order = ] processing_order ]
[ , [ @subscriber_upload_options = ] subscriber_upload_options ]
[ , [ @identityrangemanagementoption = ] 'identityrangemanagementoption' ]
[ , [ @delete_tracking = ] delete_tracking ]
[ , [ @compensate_for_errors = ] 'compensate_for_errors' ]
[ , [ @stream_blob_columns = ] 'stream_blob_columns' ]
인수
[ @publication= ] 'publication'
아티클을 포함하는 게시의 이름입니다. publication은 sysname이며 기본값은 없습니다.[ @article= ] 'article'
아티클 이름입니다. 이름은 반드시 게시 내에서 고유해야 합니다. article은 sysname이며 기본값은 없습니다. article은 Microsoft SQL Server를 실행하는 로컬 컴퓨터에 있어야 하며 식별자에 대한 규칙을 준수해야 합니다.[ @source_object= ] 'source_object'
게시할 데이터베이스 개체입니다. source_object는 sysname이며 기본값은 없습니다. 병합 복제를 사용하여 게시할 수 있는 개체의 유형에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하십시오.[ @type= ] 'type'
아티클의 유형입니다. type은 sysname이고 기본값은 table이며 다음 값 중 하나일 수 있습니다.값
설명
table(기본값)
스키마와 데이터가 있는 테이블입니다. 복제는 테이블을 모니터링하여 복제할 데이터를 결정합니다.
func schema only
스키마가 있는 함수 전용입니다.
indexed view schema only
스키마가 있는 인덱싱된 뷰 전용입니다.
proc schema only
스키마가 있는 저장 프로시저 전용입니다.
synonym schema only
스키마가 있는 동의어 전용입니다.
view schema only
스키마가 있는 뷰 전용입니다.
[ @description= ] 'description'
아티클에 대한 설명입니다. description은 nvarchar(255)이며 기본값은 NULL입니다.[ @column_tracking= ] 'column_tracking'
열 수준 추적에 대한 설정입니다. column_tracking은 nvarchar(10)이며 기본값은 FALSE입니다. true는 열 추적을 설정합니다. false는 열 추적을 해제하고 행 수준에서 충돌 감지를 유지합니다. 해당 테이블이 이미 다른 병합 게시에 게시된 경우 이 테이블을 기반으로 하는 기존 아티클이 사용하는 열 추적 값과 동일한 값을 사용해야 합니다. 이 매개 변수는 테이블 아티클에만 해당합니다.[!참고]
충돌 감지에 행 추적을 사용하는 경우(기본값) 기본 테이블에 최대 1,024개의 열을 포함할 수 있지만 아티클에서 열을 필터링해야 하므로 최대 246개 열이 게시됩니다. 열 추적을 사용하면 기본 테이블은 최대 246개의 열을 포함할 수 있습니다.
[ @status= ] 'status'
아티클의 상태입니다. status는 nvarchar(10)이며 기본값은 unsynced입니다. active인 경우 테이블 게시를 위한 초기 처리 스크립트가 실행되며, unsynced인 경우 스냅숏 에이전트가 다음에 실행될 때 테이블 게시를 위한 초기 처리 스크립트가 실행됩니다.[ @pre_creation_cmd= ] 'pre_creation_cmd'
스냅숏 적용 시 구독자에 테이블이 있는 경우 시스템이 수행할 작업을 지정합니다. pre_creation_cmd는 nvarchar(10)이며 다음 값 중 하나일 수 있습니다.값
설명
none
구독자에 이미 테이블이 존재하는 경우 아무런 동작이 발생하지 않습니다.
delete
하위 집합 필터의 WHERE 절에 기반을 둔 삭제를 실행합니다.
drop(기본값)
테이블을 다시 만들기 전에 삭제합니다. Microsoft SQL Server Compact 구독자를 지원하는 데 필요합니다.
truncate
대상 테이블을 자릅니다.
[ @creation_script= ] 'creation_script'
구독 데이터베이스에서 아티클을 만드는 데 사용된 선택적 아티클 스키마 스크립트의 경로 및 이름입니다. creation_script는 nvarchar(255)이며 기본값은 NULL입니다.[!참고]
생성 스크립트는 SQL Server Compact 구독자에서 실행되지 않습니다.
[ @schema_option= ] schema_option
지정한 아티클에 대한 스키마 생성 옵션의 비트맵입니다. schema_option은 binary(8)이며 다음 값 중 하나 이상의 |(비트 OR) 곱일 수 있습니다.값
설명
0x00
스냅숏 에이전트의 스크립팅을 사용할 수 없으므로 creation_script에 정의되어 제공된 스키마 사전 생성 스크립트를 사용합니다.
0x01
개체를 만듭니다(CREATE TABLE, CREATE PROCEDURE 등). 이는 저장 프로시저 아티클에 대한 기본값입니다.
0x10
해당 클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않아도 게시된 테이블에 이미 정의되어 있으면 기본 키 및 UNIQUE 제약 조건과 관련된 인덱스가 생성됩니다.
0x20
사용자 정의 데이터 형식(UDT)을 구독자에서의 기본 데이터 형식으로 변환합니다. UDT 열에 CHECK 또는 DEFAULT 제약 조건이 있거나 UDT 열이 기본 키의 일부이거나 계산 열이 UDT 열을 참조하는 경우 이 옵션을 사용할 수 없습니다.
0x40
해당 비클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않아도 게시된 테이블에 이미 정의되어 있으면 기본 키 및 UNIQUE 제약 조건과 관련된 인덱스가 생성됩니다.
0x80
PRIMARY KEY 제약 조건을 복제합니다. 0x10 및 0x40 옵션을 설정하지 않아도 이 제약 조건과 관련된 모든 인덱스도 복제됩니다.
0x100
테이블 아티클에 사용자 트리거를 복제합니다(정의된 경우).
0x200
FOREIGN KEY 제약 조건을 복제합니다. 참조되는 테이블이 게시의 일부가 아닌 경우 게시된 테이블의 모든 FOREIGN KEY 제약 조건은 복제되지 않습니다.
0x400
CHECK 제약 조건을 복제합니다.
0x800
기본값을 복제합니다.
0x1000
열 수준 데이터 정렬을 복제합니다.
0x2000
게시된 아티클 원본 개체와 연결된 확장 속성을 복제합니다.
0x4000
UNIQUE 제약 조건을 복제합니다. 0x10 및 0x40 옵션을 설정하지 않아도 이 제약 조건과 관련된 모든 인덱스도 복제됩니다.
0x8000
이 옵션은 SQL Server 2005 이상 버전을 실행하는 게시자에 대해 유효하지 않습니다.
0x10000
동기화하는 동안 CHECK 제약 조건이 강제 적용되지 않도록 해당 제약 조건을 NOT FOR REPLICATION으로 복제합니다.
0x20000
동기화하는 동안 FOREIGN KEY 제약 조건이 강제 적용되지 않도록 해당 제약 조건을 NOT FOR REPLICATION으로 복제합니다.
0x40000
분할된 테이블이나 인덱스와 연결된 파일 그룹을 복제합니다.
0x80000
분할된 테이블에 대한 파티션 구성표를 복제합니다.
0x100000
분할된 인덱스에 대한 파티션 구성표를 복제합니다.
0x200000
테이블 통계를 복제합니다.
0x400000
기본 바인딩을 복제합니다.
0x800000
규칙 바인딩을 복제합니다.
0x1000000
전체 텍스트 인덱스를 복제합니다.
0x2000000
xml 열에 바인딩된 XML 스키마 컬렉션을 복제하지 않습니다.
0x4000000
xml 열의 인덱스를 복제합니다.
0x8000000
구독자에 없는 스키마를 만듭니다.
0x10000000
구독자에서 xml 열을 ntext로 변환합니다.
0x20000000
SQL Server 2005에서 도입된 큰 개체 데이터 형식(nvarchar(max), varchar(max) 및 varbinary(max))을 SQL Server 2000에서 지원되는 데이터 형식으로 변환합니다.
0x40000000
사용 권한을 복제합니다.
0x80000000
게시의 일부가 아닌 개체에 대한 종속성을 삭제합니다.
0x100000000
varbinary(max) 열에 FILESTREAM 특성이 지정된 경우 해당 특성을 복제하려면 이 옵션을 사용합니다. 테이블을 SQL Server 2005 구독자에 복제할 경우에는 이 옵션을 지정하지 마십시오. FILESTREAM 열이 있는 테이블은 이 스키마 옵션의 설정 방식에 관계없이 SQL Server 2000 구독자에 복제할 수 없습니다. 관련 옵션 0x800000000을 참조하십시오.
0x200000000
SQL Server 2008에서 도입된 날짜 및 시간 데이터 형식(date, time, datetimeoffset 및 datetime2)을 이전 버전의 SQL Server에서 지원되는 데이터 형식으로 변환합니다.
0x400000000
데이터 및 인덱스에 대한 압축 옵션을 복제합니다. 자세한 내용은 데이터 압축를 참조하십시오.
0x800000000
FILESTREAM 데이터를 구독자에서 고유한 파일 그룹에 저장하려면 이 옵션을 설정합니다. 이 옵션을 설정하지 않으면 FILESTREAM 데이터는 기본 파일 그룹에 저장됩니다. 복제 기능에서는 파일 그룹을 만들지 않으므로 이 옵션을 설정할 경우 구독자에서 스냅숏을 적용하기 전에 파일 그룹을 만들어야 합니다. 스냅숏을 적용하기 전에 개체를 만드는 방법은 스냅숏 적용 전후에 스크립트 실행을 참조하십시오.
관련 옵션 0x100000000을 참조하십시오.
0x1000000000
SQL Server 2005를 실행하고 있는 구독자에 UDT(사용자 정의 형식) 형식의 열을 복제할 수 있도록 CLR(공용 언어 런타임) UDT를 varbinary(max)로 변환합니다.
0x2000000000
SQL Server 2005를 실행하고 있는 구독자에 hierarchyid 형식의 열을 복제할 수 있도록 hierarchyid 데이터 형식을 varbinary(max)로 변환합니다. 복제된 테이블의 hierarchyid 열을 사용하는 방법은 hierarchyid(Transact-SQL)를 참조하십시오.
0x4000000000
테이블의 필터링된 인덱스를 복제합니다. 필터링된 인덱스에 대한 자세한 내용은 필터링된 인덱스 만들기을 참조하십시오.
0x8000000000
geography 및 geometry 데이터 형식을 varbinary(max)로 변환하여 SQL Server 2005를 실행하고 있는 구독자에 이러한 형식의 열을 복제할 수 있도록 합니다.
0x10000000000
geography 및 geometry 형식의 열에 대한 인덱스를 복제합니다.
이 값이 NULL인 경우 시스템은 아티클에 대해 유효한 스키마 옵션을 자동으로 생성합니다. 주의 섹션에 있는 기본 스키마 옵션 표에서는 아티클 유형을 기반으로 하여 선택할 수 있는 값을 보여 줍니다. 또한 모든 복제 유형 및 아티클 유형에 대해 schema_option 값이 모두 유효한 것은 아닙니다. 주의에 있는 유효한 스키마 옵션 표에서는 지정된 아티클 유형에 대해 지정할 수 있는 옵션을 보여 줍니다.
[!참고]
schema_option 매개 변수는 초기 스냅숏에 대한 복제 옵션에만 영향을 줍니다. 초기 스키마가 스냅숏 에이전트에 의해 생성되고 구독자에 적용되면 스키마 변경 내용 복제 규칙 및 sp_addmergepublication에 지정된 replicate_ddl 매개 변수 설정을 기반으로 구독자에 대한 게시 스키마 변경 내용이 복제됩니다. 자세한 내용은 게시 데이터베이스의 스키마 변경을 참조하십시오.
[ @subset_filterclause= ] 'subset_filterclause'
WHERE 단어를 포함하지 않고 테이블 아티클의 행 필터링을 지정하는 WHERE 절입니다. subset_filterclause는 nvarchar(1000)이며 기본값은 빈 문자열입니다.중요 성능상의 이유로 LEFT([MyColumn]) = SUSER_SNAME()과 같은 매개 변수가 있는 행 필터 절의 열 이름에는 함수를 적용하지 않는 것이 좋습니다. 필터 절에 HOST_NAME을 사용하여 HOST_NAME 값을 다시 정의할 경우 CONVERT를 사용하여 데이터 형식을 변환해야 할 수도 있습니다. 이를 위한 최선의 구현 방법은 매개 변수가 있는 행 필터의 "HOST_NAME() 값 재정의" 섹션을 참조하십시오.
[ @article_resolver= ] 'article_resolver'
테이블 아티클에서 사용자 지정 비즈니스 논리를 실행하기 위해 호출된 .NET Framework 어셈블리 또는 테이블 아티클 자체의 충돌을 해결하는 데 사용하는 COM 기반 해결 프로그램입니다. article_resolver는 varchar(255)이며 기본값은 NULL입니다. 이 매개 변수에 사용할 수 있는 값은 Microsoft 사용자 지정 해결 프로그램에 나열되어 있습니다. 제공된 값이 Microsoft 해결 프로그램 중 하나가 아닌 경우 SQL Server는 시스템이 제공하는 해결 프로그램 대신 지정된 해결 프로그램을 사용합니다. 사용할 수 있는 사용자 지정 해결 프로그램 목록을 보려면 sp_enumcustomresolvers를 사용하십시오. 자세한 내용은 병합 동기화 중 비즈니스 논리 실행 및 고급 병합 복제 충돌 감지 및 해결을 참조하십시오.[ @resolver_info= ] 'resolver_info'
사용자 지정 해결 프로그램에 필요한 추가 정보를 지정하는 데 사용합니다. 일부 Microsoft 해결 프로그램에는 입력으로 제공되는 열이 필요합니다. resolver_info는 nvarchar(255)이며 기본값은 NULL입니다. 자세한 내용은 Microsoft COM 기반 해결 프로그램을 참조하십시오.[ @source_owner= ] 'source_owner'
source_object의 소유자 이름입니다. source_owner는 sysname이며 기본값은 NULL입니다. NULL인 경우 현재 사용자가 소유자로 간주됩니다.[ @destination_owner= ] 'destination_owner'
'dbo'가 아닌 경우 구독 데이터베이스 내 개체의 소유자입니다. destination_owner는 sysname이며 기본값은 NULL입니다. NULL인 경우 'dbo'가 소유자로 간주됩니다.[ @vertical_partition= ] 'column_filter'
테이블 아티클에 열 필터링을 사용하거나 사용하지 않도록 합니다. vertical_partition은 nvarchar(5)이며 기본값은 FALSE입니다.false는 열 필터링을 하지 않고 모든 열을 게시함을 나타냅니다.
true는 선언된 기본 키와 ROWGUID 열을 제외한 모든 열을 필터링합니다. 열은 sp_mergearticlecolumn을 사용하여 추가합니다.
[ @auto_identity_range= ] 'automatic_identity_range'
게시가 생성될 때 게시에서 테이블 아티클에 대한 자동 ID 범위 처리를 사용하거나 사용하지 않도록 합니다. auto_identity_range는 nvarchar(5)이며 기본값은 FALSE입니다. true로 지정된 경우 자동 ID 범위 처리를 사용할 수 있고 false로 지정된 경우 사용할 수 없습니다.[!참고]
auto_identity_range는 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해서만 제공됩니다. ID 범위 관리 옵션을 지정하려면 identityrangemanagementoption을 사용해야 합니다. 자세한 내용은 ID 열 복제를 참조하십시오.
[ @pub_identity_range= ] pub_identity_range
자동 ID 범위 관리가 사용될 때 구독 유형이 서버 구독인 구독자에 할당되는 ID 범위 크기를 제어합니다. 이 ID 범위는 다시 게시 구독자가 해당 구독자에게 할당하도록 예약됩니다. pub_identity_range는 bigint이며 기본값은 NULL입니다. identityrangemanagementoption이 auto이거나 auto_identity_range가 true이면 이 매개 변수를 지정해야 합니다.[ @identity_range= ] identity_range
자동 ID 범위 관리가 사용될 때 게시자와 구독자 모두에게 할당되는 ID 범위 크기를 제어합니다. identity_range는 bigint이며 기본값은 NULL입니다. identityrangemanagementoption이 auto이거나 auto_identity_range가 true이면 이 매개 변수를 지정해야 합니다.[!참고]
identity_range는 이전 버전의 SQL Server를 사용하는 재게시 구독자의 ID 범위 크기를 제어합니다.
[ @threshold= ] threshold
병합 에이전트가 새 ID 범위를 할당할 때 사용되는 범위의 백분율 값입니다. threshold에 지정된 백분율 값을 사용하는 경우 해당 병합 에이전트가 새 ID 범위를 만듭니다. threshold는 int이며 기본값은 NULL입니다. identityrangemanagementoption이 auto이거나 auto_identity_range가 true이면 이 매개 변수를 지정해야 합니다.[ @verify_resolver_signature= ] verify_resolver_signature
해결 프로그램을 병합 복제에 사용하기 전에 디지털 서명을 확인할 것인지 여부를 지정합니다. verify_resolver_signature는 int이며 기본값은 1입니다.0은 서명을 확인하지 않도록 지정합니다.
1은 서명이 트러스트된 원본에서 온 것인지 확인하도록 지정합니다.
[ @destination_object= ] 'destination_object'
구독 데이터베이스에 있는 개체의 이름입니다. destination_object는 sysname이며 기본값은 @source_object에 있는 값입니다. 이 매개 변수는 아티클이 저장 프로시저, 뷰 및 UDF와 같은 스키마 전용 아티클일 경우에만 지정할 수 있습니다. 지정한 아티클이 테이블 아티클이면 @source\_object의 값이 destination_object에 있는 값을 재정의합니다.[ @allow_interactive_resolver= ] 'allow_interactive_resolver'
아티클에서 대화형 해결 프로그램을 사용하거나 사용하지 않도록 합니다. allow_interactive_resolver는 nvarchar(5)이며 기본값은 FALSE입니다. true로 지정된 경우 아티클에서 대화형 해결 프로그램을 사용할 수 있고 false로 지정된 경우 사용할 수 없습니다.[!참고]
대화형 해결 프로그램은 SQL Server Compact 구독자에서 지원되지 않습니다.
[ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
이 매개 변수는 더 이상 사용되지 않으며 이전 버전의 스크립트와의 호환성을 위해 유지 관리됩니다.[ @check_permissions= ] check_permissions
병합 에이전트가 변경 사항을 게시자에 적용할 때 확인할 테이블 수준 권한의 비트맵입니다. 병합 프로세스가 사용하는 게시자 로그인/사용자 계정에 올바른 테이블 사용 권한이 없는 경우 잘못된 변경은 충돌로 기록됩니다. check_permissions는 int이며 다음 값 중 하나 이상의 |(비트 OR) 곱일 수 있습니다.값
설명
0x00(기본값)
사용 권한을 확인하지 않습니다.
0x10
구독자에서 실행한 삽입 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.
0x20
구독자에서 실행한 업데이트 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.
0x40
구독자에서 실행한 삭제 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.
[ @force_invalidate_snapshot= ] force_invalidate_snapshot
이 저장 프로시저가 수행한 동작으로 인해 기존 스냅숏이 무효화될 수도 있습니다. force_invalidate_snapshot은 bit이며 기본값은 0입니다.0을 지정하면 아티클을 추가해도 스냅숏이 무효화되지 않습니다. 저장 프로시저가 새 스냅숏을 필요로 하는 변경을 감지하면 오류가 발생하며 변경이 수행되지 않습니다.
1을 지정하면 아티클을 추가할 경우 스냅숏이 무효화될 수 있으며 새 스냅숏을 필요로 하는 기존 구독이 있는 경우 사용되지 않을 것으로 표시될 기존 스냅숏과 생성될 새 스냅숏에 대해 사용 권한을 부여합니다. 기존 스냅숏을 사용하여 아티클을 게시에 추가할 때 force_invalidate_snapshot은 1로 설정됩니다.
[ @published_in_tran_pub= ] 'published_in_tran_pub'
병합 게시의 아티클이 트랜잭션 게시에도 게시됨을 나타냅니다. published_in_tran_pub는 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 아티클이 트랜잭션 게시에도 게시됩니다.[ @force_reinit_subscription= ] force_reinit_subscription
이 저장 프로시저가 수행한 동작으로 인해 기존 구독을 다시 초기화해야 할 수도 있습니다. force_reinit_subscription은 bit이며 기본값은 0입니다.0을 지정하면 아티클을 추가해도 구독이 다시 초기화되지 않습니다. 저장 프로시저가 기존 구독을 다시 초기화해야 하는 변경을 감지하면 오류가 발생하며 변경이 수행되지 않습니다.
1은 병합 아티클에 대한 변경으로 인해 기존 구독이 다시 초기화됨을 의미하며 구독을 다시 초기화할 수 있는 권한을 부여합니다. subset_filterclause에서 매개 변수가 있는 행 필터를 지정하는 경우 force_reinit_subscription은 1로 설정됩니다.
[ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
논리적 레코드의 멤버인 아티클에 대한 충돌 감지 수준을 지정합니다. logical_record_level_conflict_detection은 nvarchar(5)이며 기본값은 FALSE입니다.true를 지정하면 논리적 레코드에 변경 사항이 발생하면 충돌이 감지됩니다.
false를 지정하면 column_tracking에 지정된 대로 기본 충돌 감지를 사용합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하십시오.
[!참고]
논리 레코드는 SQL Server Compact 구독자에서 지원되지 않으므로 이러한 구독자를 지원하려면 logical_record_level_conflict_detection에 대해 false 값을 지정해야 합니다.
[ @logical_record_level_conflict_resolution= ] 'logical_record_level_conflict_resolution'
논리적 레코드의 멤버인 아티클에 대한 충돌 해결 수준을 지정합니다. logical_record_level_conflict_resolution은 nvarchar(5)이며 기본값은 FALSE입니다.true인 경우 전체 적용되는 논리적 레코드가 무시되는 논리적 레코드를 덮어씁니다.
false인 경우 적용되는 행은 논리적 레코드로 제한되지 않습니다. logical_record_level_conflict_detection이 true인 경우 logical_record_level_conflict_resolution도 true로 설정해야 합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하십시오.
[!참고]
논리 레코드는 SQL Server Compact 구독자에서 지원되지 않으므로 이러한 구독자를 지원하려면 logical_record_level_conflict_resolution에 대해 false 값을 지정해야 합니다.
[ @partition_options= ] partition_options
아티클의 데이터 분할 방식을 정의합니다. 데이터를 분할하면 모든 행이 하나의 파티션 또는 하나의 구독에만 속한 경우 성능을 최적화할 수 있습니다. partition_options는 tinyint이며 다음 값 중 하나일 수 있습니다.값
설명
0(기본값)
아티클에 대한 필터링이 정적이거나 각 파티션에 대한 고유한 데이터 하위 집합을 생성하지 않습니다. 즉, 겹치는 파티션입니다.
1
파티션이 겹치며 구독자에서 DML(데이터 조작 언어) 업데이트를 수행해도 행이 속한 파티션이 변경되지 않습니다.
2
아티클을 필터링하면 겹치지 않는 파티션이 생성되지만 여러 구독자가 동일한 파티션을 받을 수 있습니다.
3
아티클을 필터링하면 각 구독에 고유한 겹치지 않는 파티션이 생성됩니다.
[!참고]
아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 partition_options 값은 두 아티클에 대해 동일해야 합니다.
[ @processing_order= ] processing_order
병합 게시에서 아티클의 처리 순서를 나타냅니다. processing_order는 int이며 기본값은 0입니다. 0은 아티클이 정렬되지 않도록 지정하고, 다른 모든 값은 이 아티클에 대한 처리 순서를 지정하는 순서 값을 나타냅니다. 아티클은 최하위에서 최상위의 순서로 처리됩니다. 두 아티클이 같은 값을 가진 경우 처리 순서는 sysmergearticles 시스템 테이블의 아티클 애칭 순서에 따라 결정됩니다. 자세한 내용은 병합 아티클의 처리 순서 지정을 참조하십시오.[ @subscriber_upload_options= ] subscriber_upload_options
구독 유형이 클라이언트 구독인 구독자에서 수행되는 업데이트에 대한 제한을 정의합니다. 자세한 내용은 다운로드 전용 아티클로 병합 복제 성능 최적화를 참조하십시오. subscriber_upload_options는 tinyint이며 다음 값 중 하나일 수 있습니다.값
설명
0(기본값)
제한이 없습니다. 구독자의 변경 내용을 게시자에 업로드합니다.
1
구독자에서 변경이 허용되지만 변경 내용이 게시자에 업로드되지 않습니다.
2
구독자에서 변경이 허용되지 않습니다.
subscriber_upload_options를 변경하려면 sp_reinitmergepullsubscription(Transact-SQL)을 호출하여 구독을 다시 초기화해야 합니다.
[!참고]
아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 subscriber_upload_options 값은 두 아티클에 대해 동일해야 합니다.
[ @identityrangemanagementoption= ] identityrangemanagementoption
아티클에 대해 ID 범위 관리를 처리하는 방법을 지정합니다. identityrangemanagementoption은 nvarchar(10)이며 다음 값 중 하나일 수 있습니다.값
설명
none
ID 범위 관리를 사용하지 않습니다.
manual
수동 ID 범위 처리를 사용하려면 NOT FOR REPLICATION을 사용하여 ID 열을 표시합니다.
auto
ID 범위의 자동 관리를 지정합니다.
NULL(기본값)
auto_identity_range가 true로 설정되어 있지 않으면 기본값은 none입니다.
이전 버전과의 호환성을 위해 identityrangemanagementoption의 값이 NULL인 경우 auto_identity_range의 값이 확인됩니다. 그러나 identityrangemanagementoption의 값이 NULL이 아닌 경우 auto_identity_range의 값은 무시됩니다. 자세한 내용은 ID 열 복제를 참조하십시오.
[ @delete_tracking= ] 'delete_tracking'
삭제 내용을 복제하는지 여부를 나타냅니다. delete_tracking은 nvarchar(5)이며 기본값은 TRUE입니다. false인 경우 삭제 내용을 복제하지 않으며 true인 경우 삭제 내용을 복제합니다. 병합 복제에서는 일반적으로 삭제 내용을 복제합니다. delete_tracking을 false로 설정하면 구독자에서 삭제된 행을 게시자에서 수동으로 제거하고 게시자에서 삭제된 행을 구독자에서 수동으로 제거해야 합니다.중요 delete_tracking을 false로 설정하면 불일치가 발생합니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 delete_tracking 값은 두 아티클에 대해 동일해야 합니다.
[!참고]
delete_tracking 옵션은 새 게시 마법사 또는 게시 속성 대화 상자를 사용하여 설정할 수 없습니다.
[ @compensate_for_errors= ] 'compensate_for_errors'
동기화 중에 오류가 발생할 경우 보정 동작이 수행될지 여부를 나타냅니다. compensate_for_errors i는 nvarchar(5)이며 기본값은 FALSE입니다. true로 설정된 경우 동기화 중에 구독자 또는 게시자에서 적용할 수 없는 변경 내용은 항상 보정 동작을 통해 실행 취소되지만 잘못 구성되어 오류를 생성하는 한 구독자로 인해 다른 구독자 및 게시자에서의 변경이 실행 취소될 수 있습니다. false는 이러한 보정 작업을 사용하지 않도록 합니다. 하지만 오류는 계속 기록되며 보정 및 후속 병합은 성공할 때까지 변경 내용 적용을 시도합니다.중요 영향을 받는 행의 데이터가 일치하지 않은 것으로 나타날 수 있지만 오류를 처리하면 바로 변경 내용을 적용할 수 있어서 데이터가 일치하게 됩니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 compensate_for_errors 값은 두 아티클에 대해 동일해야 합니다.
[ @stream_blob_columns= ] 'stream_blob_columns'
BLOB(Binary Large Object) 열을 복제할 때 데이터 스트림 최적화를 사용하도록 지정합니다. stream_blob_columns는 nvarchar(5)이며 기본값은 FALSE입니다. true인 경우 최적화를 시도합니다. FILESTREAM을 설정한 경우 stream_blob_columns가 true로 설정됩니다. 그러면 FILESTREAM 데이터 복제가 최적의 방식으로 수행되고 메모리 활용률이 낮아집니다. FILESTREAM 테이블 아티클에서 blob 스트리밍을 사용하지 않도록 하려면 sp_changemergearticle을 사용하여 stream_blob_columns를 false로 설정합니다.중요 이 메모리 최적화를 설정하면 동기화 중에 병합 에이전트의 성능이 저하될 수 있습니다. MB 단위의 데이터가 포함된 열을 복제할 때만 이 옵션을 사용해야 합니다.
[!참고]
논리적 레코드와 같은 특정 병합 복제 기능은 stream_blob_columns가 true로 설정되어 있어도 BLOB을 복제할 때 스트림 최적화를 사용할 수 없도록 합니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
sp_addmergearticle은 병합 복제에 사용됩니다.
개체를 게시하면 해당 정의가 구독자로 복사됩니다. 하나 이상의 다른 개체에 종속된 데이터베이스 개체를 게시하는 경우 참조되는 개체를 모두 게시해야 합니다. 예를 들어 테이블에 종속된 뷰를 게시하는 경우 테이블도 게시해야 합니다.
partition_options 값으로 3을 지정하면 해당 아티클에 있는 각 데이터 파티션에 대해 구독이 하나만 있을 수 있습니다. 새 구독의 필터링 조건이 기존 구독과 동일한 파티션을 사용하도록 하여 두 번째 구독이 생성될 경우 기존 구독이 삭제됩니다.
partition_options 값으로 3을 지정하면 병합 에이전트가 실행될 때마다 메타데이터가 정리되어 분할된 스냅숏은 더 빨리 만료됩니다. 이 옵션을 사용할 때는 구독자가 요청한 분할된 스냅숏을 활성화해야 합니다. 자세한 내용은 매개 변수가 있는 필터를 사용하는 병합 게시의 스냅숏을 참조하십시오.
subset_filterclause로 정적 행 필터를 사용하는 아티클을 기존 게시(매개 변수가 있는 필터를 사용하는 아티클 포함)에 추가하려면 구독을 다시 초기화해야 합니다.
processing_order를 지정하는 경우 나중에 새 값을 설정하기 쉽도록 아티클 순서 값 간에 간격을 두는 것이 좋습니다. 예를 들어 Article1, Article2 및 Article3과 같이 3개의 아티클이 있는 경우 processing_order를 1, 2, 3 대신 10, 20, 30으로 지정합니다. 자세한 내용은 병합 아티클의 처리 순서 지정을 참조하십시오.
기본 스키마 옵션 표
이 표에서는 schema_option 값을 NULL로 지정한 경우 저장 프로시저에서 아티클 유형에 따라 설정하는 기본값을 설명합니다.
아티클 유형 |
스키마 옵션 값 |
---|---|
func schema only |
0x01 |
indexed view schema only |
0x01 |
proc schema only |
0x01 |
table |
|
view schema only |
0x01 |
[!참고]
게시가 이전 버전의 SQL Server를 지원하는 경우 table에 대한 기본 스키마 옵션은 0x30034FF1입니다.
유효한 스키마 옵션 표
다음 표에서는 아티클 유형에 따라 허용되는 schema_option 값에 대해 설명합니다.
아티클 유형 |
스키마 옵션 값 |
---|---|
func schema only |
0x01 및 0x2000 |
indexed view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 및 0x200000 |
proc schema only |
0x01 및 0x2000 |
table |
모든 옵션 |
view schema only |
0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x1000000 및 0x200000 |
예
DECLARE @publication AS sysname;
DECLARE @table1 AS sysname;
DECLARE @table2 AS sysname;
DECLARE @table3 AS sysname;
DECLARE @salesschema AS sysname;
DECLARE @hrschema AS sysname;
DECLARE @filterclause AS nvarchar(1000);
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @table1 = N'Employee';
SET @table2 = N'SalesOrderHeader';
SET @table3 = N'SalesOrderDetail';
SET @salesschema = N'Sales';
SET @hrschema = N'HumanResources';
SET @filterclause = N'Employee.LoginID = HOST_NAME()';
-- Add a filtered article for the Employee table.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table1,
@source_object = @table1,
@type = N'table',
@source_owner = @hrschema,
@schema_option = 0x0004CF1,
@description = N'article for the Employee table',
@subset_filterclause = @filterclause;
-- Add an article for the SalesOrderHeader table that is filtered
-- based on Employee and horizontally filtered.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table2,
@source_object = @table2,
@type = N'table',
@source_owner = @salesschema,
@vertical_partition = N'true',
@schema_option = 0x0034EF1,
@description = N'article for the SalesOrderDetail table';
-- Add an article for the SalesOrderDetail table that is filtered
-- based on SaledOrderHeader.
EXEC sp_addmergearticle
@publication = @publication,
@article = @table3,
@source_object = @table3,
@source_owner = @salesschema,
@description = 'article for the SalesOrderHeader table',
@identityrangemanagementoption = N'auto',
@pub_identity_range = 100000,
@identity_range = 100,
@threshold = 80,
@schema_option = 0x0004EF1;
-- Add all columns to the SalesOrderHeader article.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Remove the credit card Approval Code column.
EXEC sp_mergearticlecolumn
@publication = @publication,
@article = @table2,
@column = N'CreditCardApprovalCode',
@operation = N'drop',
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between Employee and SalesOrderHeader.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table2,
@filtername = N'SalesOrderHeader_Employee',
@join_articlename = @table1,
@join_filterclause = N'Employee.BusinessEntityID = SalesOrderHeader.SalesPersonID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
-- Add a merge join filter between SalesOrderHeader and SalesOrderDetail.
EXEC sp_addmergefilter
@publication = @publication,
@article = @table3,
@filtername = N'SalesOrderDetail_SalesOrderHeader',
@join_articlename = @table2,
@join_filterclause = N'SalesOrderHeader.SalesOrderID = SalesOrderDetail.SalesOrderID',
@join_unique_key = 1,
@filter_type = 1,
@force_invalidate_snapshot = 1,
@force_reinit_subscription = 1;
GO
사용 권한
sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.
참고 항목
참조
sp_changemergearticle(Transact-SQL)
sp_dropmergearticle(Transact-SQL)
sp_helpmergearticle(Transact-SQL)