다음을 통해 공유


sp_add_targetservergroup(Transact-SQL)

적용 대상: SQL Server Azure SQL Managed Instance

기존 병합 게시에 아티클을 추가합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.

Transact-SQL 구문 표기 규칙

구문

sp_addmergearticle
    [ @publication = ] N'publication'
    , [ @article = ] N'article'
    , [ @source_object = ] N'source_object'
    [ , [ @type = ] N'type' ]
    [ , [ @description = ] N'description' ]
    [ , [ @column_tracking = ] N'column_tracking' ]
    [ , [ @status = ] N'status' ]
    [ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
    [ , [ @creation_script = ] N'creation_script' ]
    [ , [ @schema_option = ] schema_option ]
    [ , [ @subset_filterclause = ] N'subset_filterclause' ]
    [ , [ @article_resolver = ] N'article_resolver' ]
    [ , [ @resolver_info = ] N'resolver_info' ]
    [ , [ @source_owner = ] N'source_owner' ]
    [ , [ @destination_owner = ] N'destination_owner' ]
    [ , [ @vertical_partition = ] N'vertical_partition' ]
    [ , [ @auto_identity_range = ] N'auto_identity_range' ]
    [ , [ @pub_identity_range = ] pub_identity_range ]
    [ , [ @identity_range = ] identity_range ]
    [ , [ @threshold = ] threshold ]
    [ , [ @verify_resolver_signature = ] verify_resolver_signature ]
    [ , [ @destination_object = ] N'destination_object' ]
    [ , [ @allow_interactive_resolver = ] N'allow_interactive_resolver' ]
    [ , [ @fast_multicol_updateproc = ] N'fast_multicol_updateproc' ]
    [ , [ @check_permissions = ] check_permissions ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @published_in_tran_pub = ] N'published_in_tran_pub' ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection' ]
    [ , [ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution' ]
    [ , [ @partition_options = ] partition_options ]
    [ , [ @processing_order = ] processing_order ]
    [ , [ @subscriber_upload_options = ] subscriber_upload_options ]
    [ , [ @identityrangemanagementoption = ] N'identityrangemanagementoption' ]
    [ , [ @delete_tracking = ] N'delete_tracking' ]
    [ , [ @compensate_for_errors = ] N'compensate_for_errors' ]
    [ , [ @stream_blob_columns = ] N'stream_blob_columns' ]
[ ; ]

인수

[ @publication = ] N'publication'

아티클을 포함하는 게시의 이름입니다. @publication 기본값이 없는 sysname입니다.

[ @article = ] N'article'

아티클의 이름입니다. 이름은 게시 내에서 고유해야 합니다. @article 기본값이 없는 sysname입니다. @article SQL Server를 실행하는 로컬 컴퓨터에 있어야 하며 식별자에 대한 규칙을 준수해야 합니다.

[ @source_object = ] N'source_object'

게시할 데이터베이스 개체입니다. @source_object 기본값이 없는 sysname입니다. 병합 복제를 사용하여 게시할 수 있는 개체 유형에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조 하세요.

[ @type = ] N'type'

아티클의 형식입니다. @type 기본값table인 sysname이며 다음 값 중 하나일 수 있습니다.

설명
table(기본값) 스키마 및 데이터가 있는 테이블입니다. 복제는 테이블을 모니터링하여 복제할 데이터를 결정합니다.
func schema only 스키마만 있는 함수입니다.
indexed view schema only 스키마만 있는 인덱싱된 뷰입니다.
proc schema only 스키마가 있는 저장 프로시저 전용입니다.
synonym schema only 스키마만 있는 동의어입니다.
view schema only 스키마만 사용하여 봅니다.

[ @description = ] N'description'

문서에 대한 설명입니다. @description 기본값NULL인 nvarchar(255)입니다.

[ @column_tracking = ] N'column_tracking'

열 수준 추적에 대한 설정입니다. @column_tracking 기본값false인 nvarchar(10)입니다. false 열 추적을 켭니다. false 열 추적을 해제하고 행 수준에서 충돌 검색을 유지합니다. 테이블이 다른 병합 게시에 이미 게시된 경우 이 테이블을 기반으로 기존 아티클에서 사용하는 것과 동일한 열 추적 값을 사용해야 합니다. 이 매개 변수는 테이블 아티클에만 해당됩니다.

참고 항목

행 추적을 충돌 감지(기본값)에 사용하는 경우 기본 테이블에는 최대 1,024개의 열이 포함될 수 있지만, 최대 246개의 열이 게시되도록 아티클에서 열을 필터링해야 합니다. 열 추적을 사용하는 경우 기본 테이블에는 열이 최대 246개까지 포함될 수 있습니다.

[ @status = ] N'status'

아티클의 상태입니다. @status 기본값unsynced인 nvarchar(10)입니다. 이 경우 active테이블을 게시할 초기 처리 스크립트가 실행됩니다. 이 경우 unsynced테이블을 게시하는 초기 처리 스크립트는 다음에 스냅샷 에이전트 실행할 때 실행됩니다.

[ @pre_creation_cmd = ] N'pre_creation_cmd'

스냅샷을 적용할 때 구독자에 테이블이 있는 경우 시스템에서 수행할 작업을 지정합니다. @pre_creation_cmd nvarchar(10)이며 다음 값 중 하나일 수 있습니다.

설명
none 구독자에 테이블이 이미 있는 경우 아무 작업도 수행되지 않습니다.
delete 하위 집합 필터의 WHERE 절에 따라 삭제를 실행합니다.
drop(기본값) 테이블을 다시 만들기 전에 삭제합니다. SQL Server Compact 구독자를 지원하는 데 필요합니다.
truncate 대상 테이블을 자립니다.

[ @creation_script = ] N'creation_script'

구독 데이터베이스에서 아티클을 만드는 데 사용되는 선택적 아티클 스키마 스크립트의 경로 및 이름입니다. @creation_script 기본값NULL인 nvarchar(255)입니다.

참고 항목

만들기 스크립트는 SQL Server Compact 구독자에서 실행되지 않습니다.

[ @schema_option = ] schema_option

지정된 아티클에 대한 스키마 생성 옵션의 비트맵입니다. @schema_option varbinary(8)이며 | (비트 OR) 이러한 값 중 하나 이상의 을 반환합니다.

설명
0x00 스냅샷 에이전트 스크립팅을 사용하지 않도록 설정하고 @creation_script 정의된 제공된 스키마 사전 생성 스크립트를 사용합니다.
0x01 개체 만들기(CREATE TABLECREATE 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(9.x) 이상 버전을 실행하는 게시자에는 유효하지 않습니다.
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(9.x)에 도입된 큰 개체 데이터 형식(nvarchar(max), varchar(max) 및 varbinary(max))을 SQL Server 2000(8.x)에서 지원되는 데이터 형식으로 변환합니다.
0x40000000 사용 권한을 복제합니다.
0x80000000 게시에 속하지 않는 개체에 대한 종속성을 삭제하려고 시도합니다.
0x100000000 varbinary(max) 열에 지정된 경우 이 옵션을 사용하여 특성을 복제 FILESTREAM 합니다. SQL Server 2005(9.x) 구독자에 테이블을 복제하는 경우 이 옵션을 지정하지 마세요. FILESTREAM 열이 있는 테이블을 SQL Server 2000(8.x) 구독자에 복제하는 것은 이 스키마 옵션을 설정하는 방법에 관계없이 지원되지 않습니다. 관련 옵션을 참조하세요 0x800000000.
0x200000000 SQL Server 2008(10.0.x)에 도입된 날짜 및 시간 데이터 형식(날짜, 시간, datetimeoffsetdatetime2)을 이전 버전의 SQL Server에서 지원되는 데이터 형식으로 변환합니다.
0x400000000 데이터 및 인덱스에 대한 압축 옵션을 복제합니다. 자세한 내용은 Data Compression을 참조하세요.
0x800000000 FILESTREAM 데이터를 구독자의 자체 파일 그룹에 저장하려면 이 옵션을 설정합니다. 이 옵션을 설정하지 않으면 FILESTREAM 데이터가 기본 파일 그룹에 저장됩니다. 복제는 파일 그룹을 만들지 않습니다. 따라서 이 옵션을 설정하는 경우 구독자에서 스냅샷을 적용하기 전에 파일 그룹을 만들어야 합니다. 스냅샷을 적용하기 전에 개체를 만드는 방법에 대한 자세한 내용은 스냅샷이 적용되기 전과 후에 스크립트 실행을 참조하세요.

관련 옵션을 참조하세요 0x100000000.
0x1000000000 UDT(공용 언어 런타임) UDT(사용자 정의 형식) 를 varbinary(max) 로 변환하여 UDT 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 합니다.
0x2000000000 hierarchyid 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 hierarchyid 데이터 형식을 varbinary(max)로 변환합니다. 복제된 테이블에서 hierarchyid 열을 사용하는 방법에 대한 자세한 내용은 hierarchyid 데이터 형식 메서드 참조를 참조하세요.
0x4000000000 테이블에서 필터링된 인덱스를 복제합니다. 필터링된 인덱스에 대한 자세한 내용은 필터링된 인덱스 만들기를 참조하세요.
0x8000000000 이러한 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 지리기하 도형 데이터 형식을 varbinary(max)로 변환합니다.
0x10000000000 지리 및 기하 도형 형식의 열에 대한 인덱스를 복제합니다.

이 값이 NULL면 시스템에서 아티클에 대한 유효한 스키마 옵션을 자동으로 생성합니다. 기본 스키마 옵션 테이블에아티클 형식에 따라 선택한 값이 표시됩니다. 또한 모든 @schema_option 값이 모든 형식의 복제 및 아티클 형식에 유효하지는 않습니다. 유효한 스키마 옵션 테이블에는 지정된 아티클 형식에 대해 지정할 수 있는 옵션이 표시됩니다.

참고 항목

@schema_option 매개 변수는 초기 스냅샷에 대한 복제 옵션에만 영향을 줍니다. 초기 스키마가 스냅샷 에이전트 생성되고 구독자에 적용되면 스키마 변경 복제 규칙 및 sp_addmergepublication 지정된 @replicate_ddl 매개 변수 설정에 따라 게시 스키마 변경 내용이 구독자에 복제됩니다. 자세한 내용은 게시 데이터베이스의 스키마 변경을 참조하세요.

[ @subset_filterclause = ] N'subset_filterclause'

WHERE라는 단어가 포함되지 않은 테이블 아티클의 가로 필터링을 지정하는 WHERE 절입니다. @subset_filterclause nvarchar(1000)이며 기본값은 빈 문자열입니다.

Important

성능상의 이유로 다음과 같이 LEFT([MyColumn]) = SUSER_SNAME()매개 변수가 있는 행 필터 절의 열 이름에 함수를 적용하지 않는 것이 좋습니다. 필터 절에서 HOST_NAME 사용하고 값을 재정의 HOST_NAME 하는 경우 CONVERT를 사용하여 데이터 형식을 변환해야 할 수 있습니다. 이 사례에 대한 모범 사례에 대한 자세한 내용은 매개 변수가 있는 필터 - 매개 변수가 있는 행 필터의 "HOST_NAME() 값 재정의" 섹션을 참조하세요.

[ @article_resolver = ] N'article_resolver'

테이블 아티클의 충돌을 해결하는 데 사용되는 COM 기반 해결 프로그램 또는 테이블 아티클에서 사용자 지정 비즈니스 논리를 실행하기 위해 호출된 .NET Framework 어셈블리입니다. @article_resolver 기본값NULL인 nvarchar(255)입니다. 이 매개 변수에 사용할 수 있는 값은 Microsoft 사용자 지정 해결사에 나열됩니다. 제공된 값이 Microsoft 확인자 중 하나가 아닌 경우 SQL Server는 시스템 제공 확인자 대신 지정된 해결 프로그램을 사용합니다. 사용 가능한 사용자 지정 해결 프로그램 목록을 열거하는 데 사용합니다 sp_enumcustomresolvers . 자세한 내용은 병합 동기화고급 병합 복제 중 비즈니스 논리 실행 - 충돌 검색 및 해결을 참조하세요.

[ @resolver_info = ] N'resolver_info'

사용자 지정 확인자에서 필요한 추가 정보를 지정하는 데 사용됩니다. 일부 Microsoft 해결사에는 확인자에 대한 입력으로 제공된 열이 필요합니다. @resolver_info 기본값NULL인 nvarchar(517)입니다. 자세한 내용은 고급 병합 복제 충돌 - COM 기반 해결 프로그램을 참조 하세요.

[ @source_owner = ] N'source_owner'

@source_object 소유자의 이름입니다. @source_owner sysname이며 기본값은 .입니다NULL. 이 경우 NULL현재 사용자가 소유자로 간주됩니다.

[ @destination_owner = ] N'destination_owner'

구독 데이터베이스에 있는 개체의 소유자입니다(그렇지 않은 dbo경우). @destination_owner sysname이며 기본값은 .입니다NULL. dbo 이면 NULL소유자로 간주됩니다.

[ @vertical_partition = ] N'vertical_partition'

테이블 아티클에서 열 필터링을 사용하거나 사용하지 않도록 설정합니다. @vertical_partition 기본값false인 nvarchar(5)입니다.

  • false 는 세로 필터링이 없음을 나타내고 모든 열을 게시합니다.

  • false 선언된 기본 키와 ROWGUID 열을 제외한 모든 열을 지웁니다. 열을 사용하여 sp_mergearticlecolumn추가합니다.

[ @auto_identity_range = ] N'auto_identity_range'

게시를 만들 때 이 테이블 아티클에 대한 자동 ID 범위 처리를 사용하거나 사용하지 않도록 설정합니다. @auto_identity_range 기본값NULL인 nvarchar(5)입니다. false 는 자동 ID 범위 처리를 false 사용하지만 사용하지 않도록 설정합니다.

참고 항목

이 매개 변수는 사용되지 않으며 스크립트의 이전 버전과의 호환성을 위해 유지 관리됩니다. ID 범위 관리 옵션을 지정하는 데 @identityrangemanagementoption 사용해야 합니다. 자세한 내용은 ID 열 복제를 참조하세요.

[ @pub_identity_range = ] pub_identity_range

자동 ID 범위 관리가 사용될 때 구독 유형이 서버 구독인 구독자에 할당되는 ID 범위 크기를 제어합니다. 이 ID 범위는 재게시 구독자가 자체 구독자에 할당할 수 있도록 예약되어 있습니다. @pub_identity_range 기본값NULL인 bigint입니다. @identityrangemanagementoption 경우 또는 @auto_identity_range auto 경우 false이 매개 변수를 지정해야 합니다.

[ @identity_range = ] identity_range

자동 ID 범위 관리가 사용될 때 게시자와 구독자 모두에게 할당되는 ID 범위 크기를 제어합니다. @identity_range 기본값NULL인 bigint입니다. @identityrangemanagementoption 경우 또는 @auto_identity_range auto 경우 false이 매개 변수를 지정해야 합니다.

참고 항목

@identity_range 이전 버전의 SQL Server를 사용하여 구독자를 다시 게시할 때 ID 범위 크기를 제어합니다.

[ @threshold = ] 임계값

병합 에이전트 새 ID 범위를 할당하는 시기를 제어하는 백분율 값입니다. @threshold 지정된 값의 백분율을 사용하면 병합 에이전트 새 ID 범위를 만듭니다. @threshold 기본값NULL인 int입니다. @identityrangemanagementoption 경우 또는 @auto_identity_range auto 경우 false이 매개 변수를 지정해야 합니다.

[ @verify_resolver_signature = ] verify_resolver_signature

병합 복제에서 확인자를 사용하기 전에 디지털 서명을 확인할지 여부를 지정합니다. @verify_resolver_signature 기본값1int입니다.

  • 0 은 서명이 확인되지 않음을 지정합니다.

  • 1 는 서명이 신뢰할 수 있는 원본에서 온 것인지 확인하기 위해 확인되도록 지정합니다.

[ @destination_object = ] N'destination_object'

구독 데이터베이스에 있는 개체의 이름입니다. @destination_object sysname이며 기본값은 @source_object. 이 매개 변수는 아티클이 저장 프로시저, 뷰 및 UDF와 같은 스키마 전용 아티클일 경우에만 지정할 수 있습니다. 지정한 아티클이 테이블 아티클인 경우 @source_object 값은 @destination_object 값을 재정의합니다.

[ @allow_interactive_resolver = ] N'allow_interactive_resolver'

아티클에서 대화형 해결 프로그램 사용을 사용하거나 사용하지 않도록 설정합니다. @allow_interactive_resolver 기본값false인 nvarchar(5)입니다. false 를 사용하면 문서에서 대화형 해결 프로그램을 사용할 수 있습니다. false 를 사용하지 않도록 설정합니다.

참고 항목

대화형 확인자는 SQL Server Compact 구독자에서 지원되지 않습니다.

[ @fast_multicol_updateproc = ] N'fast_multicol_updateproc'

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

[ @check_permissions = ] check_permissions

병합 에이전트 변경 내용을 게시자에 적용할 때 확인되는 테이블 수준 권한의 비트맵입니다. 병합 프로세스에서 사용하는 게시자 로그인/사용자 계정에 올바른 테이블 권한이 없으면 잘못된 변경 내용이 충돌로 기록됩니다. @check_permissions int이며 | 일 수 있습니다. (비트 OR) 다음 값 중 하나 이상의 을 반환합니다.

설명
0x00(기본값) 사용 권한이 확인되지 않습니다.
0x10 구독자에서 수행된 삽입 작업을 업로드하기 전에 게시자에서 사용 권한을 확인합니다.
0x20 구독자에서 수행된 업데이트 작업을 업로드하기 전에 게시자에서 사용 권한을 확인합니다.
0x40 구독자에서 수행된 삭제 작업을 업로드하기 전에 게시자에서 사용 권한을 확인합니다.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

이 저장 프로시저에서 수행한 작업이 기존 스냅샷을 무효화할 수 있음을 인정합니다. @force_invalidate_snapshot 비트이며 기본값은 .입니다0.

  • 0 는 아티클을 추가해도 스냅샷이 잘못되지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷이 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.

  • 1 는 아티클을 추가하면 스냅샷이 유효하지 않을 수 있으며, 새 스냅샷이 필요한 기존 구독이 있는 경우 기존 스냅샷을 사용되지 않는 것으로 표시하고 생성된 새 스냅샷에 대한 권한을 부여합니다. @force_invalidate_snapshot 기존 스냅샷이 1 있는 게시에 아티클을 추가할 때로 설정됩니다.

[ @published_in_tran_pub = ] N'published_in_tran_pub'

병합 게시의 아티클이 트랜잭션 게시에도 게시됨을 나타냅니다. @published_in_tran_pub 기본값false인 nvarchar(5)입니다. false 는 아티클이 트랜잭션 게시에도 게시되도록 지정합니다.

[ @force_reinit_subscription = ] force_reinit_subscription

이 저장 프로시저에서 수행한 작업에 기존 구독을 다시 초기화해야 할 수 있음을 인정합니다. @force_reinit_subscription 비트이며 기본값은 .입니다0.

  • 0 는 아티클을 추가해도 구독이 다시 초기화되지 않도록 지정합니다. 저장 프로시저가 변경 시 기존 구독을 다시 초기화해야 한다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.

  • 1 는 병합 아티클을 변경하면 기존 구독이 다시 초기화되고 구독 다시 초기화가 발생할 수 있는 권한을 부여합니다. @force_reinit_subscription @subset_filterclause 매개 변수가 있는 행 필터를 지정하는 경우로 설정 1 됩니다.

[ @logical_record_level_conflict_detection = ] N'logical_record_level_conflict_detection'

논리 레코드의 멤버인 아티클에 대한 충돌 검색 수준을 지정합니다. @logical_record_level_conflict_detection 기본값false인 nvarchar(5)입니다.

참고 항목

논리 레코드는 SQL Server Compact 구독자에서 지원되지 않으므로 이러한 구독자를 지원하려면 @logical_record_level_conflict_detection 값을 false 지정해야 합니다.

[ @logical_record_level_conflict_resolution = ] N'logical_record_level_conflict_resolution'

논리 레코드의 멤버인 아티클에 대한 충돌 해결 수준을 지정합니다. @logical_record_level_conflict_resolution 기본값false인 nvarchar(5)입니다.

  • false 는 성공한 전체 논리 레코드가 손실된 논리 레코드를 덮어쓰게 되도록 지정합니다.

  • false 는 승리 행이 논리 레코드로 제한되지 않도록 지정합니다.

@logical_record_level_conflict_detection false 경우 @logical_record_level_conflict_resolution .로 설정false해야 합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용 그룹화를 참조하세요.

참고 항목

논리 레코드는 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 기본값0int입니다. 0 는 아티클의 순서가 지정되지 않으며 다른 값은 이 아티클의 처리 순서 서수 값을 나타냅니다. 아티클은 가장 낮은 값에서 가장 높은 값의 순서대로 처리됩니다. 두 아티클의 값이 같으면 처리 순서는 sysmergearticles 시스템 테이블의 아티클 애칭 순서에 따라 결정됩니다. 자세한 내용은 병합 복제 속성 지정을 참조하세요.

[ @subscriber_upload_options = ] subscriber_upload_options

클라이언트 구독을 사용하여 구독자에서 수행한 업데이트에 대한 제한을 정의합니다. 자세한 내용은 다운로드 전용 아티클로 병합 복제 성능 최적화를 참조하세요. @subscriber_upload_options tinyint이며 다음 값 중 하나일 수 있습니다.

설명
0(기본값) 제한 사항이 없습니다. 구독자의 변경 내용이 게시자에 업로드됩니다.
1 변경 내용은 구독자에서 허용되지만 게시자에 업로드되지는 않습니다.
2 구독자에서는 변경이 허용되지 않습니다.

@subscriber_upload_options 변경 하려면 sp_reinitmergepullsubscription 호출 하여 구독을 다시 초기화해야 합니다.

참고 항목

아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 두 아티클의 @subscriber_upload_options 값이 동일해야 합니다.

[ @identityrangemanagementoption = ] N'identityrangemanagementoption'

아티클에 대한 ID 범위 관리를 처리하는 방법을 지정합니다. @identityrangemanagementoption nvarchar(10)이며 다음 값 중 하나일 수 있습니다.

설명
none ID 범위 관리를 사용하지 않도록 설정합니다.
manual NOT FOR REPLICATION을 사용하여 ID 열을 표시하여 수동 ID 범위 처리를 사용하도록 설정합니다.
auto ID 범위의 자동 관리를 지정합니다.
NULL(기본값) 기본값은 none @auto_identity_range 값이 아닌 true경우입니다.

이전 버전과의 호환성을 위해 @identityrangemanagementoption 값이면 NULL@auto_identity_range이 선택됩니다. 그러나 @identityrangemanagementoption 값이 아닌 NULL경우 @auto_identity_range은 무시됩니다. 자세한 내용은 ID 열 복제를 참조하세요.

[ @delete_tracking = ] N'delete_tracking'

삭제 내용을 복제하는지 여부를 나타냅니다. @delete_tracking 기본값true인 nvarchar(5)입니다. false 는 삭제가 복제되지 않음을 나타내며, 삭제가 복제됨을 나타내며 true 이는 병합 복제에 대한 일반적인 동작입니다. @delete_tracking 설정false되면 구독자에서 삭제된 행을 게시자에서 수동으로 제거해야 하며 게시자에서 삭제된 행은 구독자에서 수동으로 제거해야 합니다.

Important

@delete_tracking 설정하면 false 비수렴성이 발생합니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 두 아티클에 대해 @delete_tracking 값이 동일해야 합니다.

참고 항목

새 게시 마법사 또는 게시 속성 대화 상자를 사용하여 @delete_tracking 옵션을 설정할 수 없습니다.

[ @compensate_for_errors = ] N'compensate_for_errors'

동기화 중에 오류가 발생할 경우 보정 동작이 수행될지 여부를 나타냅니다. @compensate_for_errors 기본값false인 nvarchar(5)입니다. 이 옵션을 true설정하면 동기화 중에 구독자 또는 게시자에서 적용할 수 없는 변경 내용은 항상 보상 작업을 수행하여 변경 내용을 실행 취소합니다. 그러나 오류를 생성하는 잘못 구성된 구독자는 다른 구독자와 게시자의 변경 내용을 실행 취소할 수 있습니다. false 에서는 이러한 보정 작업을 사용하지 않도록 설정되지만 오류는 보정과 마찬가지로 계속 기록되고 후속 병합은 성공할 때까지 변경 내용을 적용하려고 계속 시도합니다.

Important

영향을 받는 행의 데이터가 수렴되지 않은 것처럼 보일 수 있지만 오류를 해결하는 즉시 변경 내용을 적용하고 데이터가 수렴됩니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 두 아티클에 대해 @compensate_for_errors 값이 동일해야 합니다.

[ @stream_blob_columns = ] N'stream_blob_columns'

이진 큰 개체 열을 복제할 때 데이터 스트림 최적화를 사용할 것을 지정합니다. @stream_blob_columns 기본값false인 nvarchar(5)입니다. true 는 최적화가 시도됨을 의미합니다. FILESTREAM을 사용하는 경우 @stream_blob_columns true로 설정됩니다. 그러면 FILESTREAM 데이터 복제가 최적의 방식으로 수행되고 메모리 활용률이 낮아집니다. FILESTREAM 테이블 아티클이 Blob 스트리밍을 사용하지 않도록 하려면 @stream_blob_columns false로 설정하는 데 사용합니다sp_changemergearticle.

Important

이 메모리 최적화를 사용하도록 설정하면 동기화 중에 병합 에이전트 성능이 저하될 수 있습니다. 이 옵션은 MB의 데이터가 포함된 열을 복제할 때만 사용해야 합니다.

참고 항목

논리 레코드와 같은 특정 병합 복제 기능은 @stream_blob_columns 설정된 true경우에도 이진 대형 개체를 복제할 때 스트림 최적화가 사용되지 않도록 할 수 있습니다.

반환 코드 값

0(성공) 또는 1(실패).

설명

sp_addmergearticle 는 병합 복제에 사용됩니다.

개체를 게시하면 해당 정의가 구독자에 복사됩니다. 하나 이상의 다른 개체에 의존하는 데이터베이스 개체를 게시하는 경우 참조된 모든 개체를 게시해야 합니다. 예를 들어 테이블에 종속된 뷰를 게시하는 경우 테이블도 게시해야 합니다.

@partition_options 값을 3 지정하는 경우:

  • 해당 문서의 각 데이터 파티션에 대해 단일 구독만 있을 수 있습니다. 새 구독의 필터링 기준이 기존 구독과 동일한 파티션으로 확인되는 두 번째 구독이 만들어지면 기존 구독이 삭제됩니다.

  • 메타데이터는 병합 에이전트 실행되고 분할된 스냅샷이 더 빨리 만료될 때마다 정리됩니다. 이 옵션을 사용하는 경우 구독자가 요청한 분할된 스냅샷을 사용하도록 설정하는 것이 좋습니다. 자세한 내용은 매개 변수가 있는 필터로 병합 게시에 대한 스냅샷 만들기를 참조하세요.

@subset_filterclause 사용하여 정적 가로 필터가 있는 아티클을 매개 변수가 있는 필터가 있는 아티클이 있는 기존 게시에 추가하는 경우 구독을 다시 초기화해야 합니다.

@processing_order 지정할 때 아티클 순서 값 사이에 간격을 두는 것이 좋습니다. 그러면 나중에 새 값을 더 쉽게 설정할 수 있습니다. 예를 들어 세 개의 아티클이 Article1있는 경우 , Article2Article3@processing_order , 및 30, 대신 12, 및 3.로 설정합니다 20 10. 자세한 내용은 병합 복제 속성 지정을 참조하세요.

기본 스키마 옵션 테이블

이 표에서는 아티클 형식에 따라 @schema_option 값이 지정된 경우 NULL 저장 프로시저가 설정하는 기본값을 설명합니다.

아티클 유형 스키마 옵션 값
func schema only 0x01
indexed view schema only 0x01
proc schema only 0x01
table 0x0C034FD1 - 기본 모드 스냅샷이 있는 SQL Server 2005(9.x) 이상 호환 게시

0x08034FF1 - 문자 모드 스냅샷이 있는 SQL Server 2005(9.x) 이상 호환 게시
view schema only 0x01

참고 항목

게시에서 이전 버전의 SQL Server를 지원하는 경우 기본 스키마 옵션은 table 다음과 같습니다 0x30034FF1.

유효한 스키마 옵션 테이블

다음 표에서는 아티클 유형에 따라 @schema_option 허용되는 값에 대해 설명합니다.

아티클 유형 스키마 옵션 값
func schema only 0x010x2000
indexed view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x10000000x200000
proc schema only 0x010x2000
table 모든 옵션
view schema only 0x01, 0x040, 0x0100, 0x2000, 0x40000, 0x10000000x200000

예제

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 고정 데이터베이스 역할의 멤버여야 합니다.