sp_add_targetservergroup(Transact-SQL)

업데이트: 2006년 4월 14일

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

항목 링크 아이콘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'
    아티클이 포함된 게시의 이름입니다. publicationsysname이며 기본값은 없습니다.
  • [ @article= ] 'article'
    아티클 이름입니다. 이 이름은 게시 내에서 고유해야 합니다. articlesysname이며 기본값은 없습니다. article은 Microsoft SQL Server를 실행하는 로컬 컴퓨터에 있어야 하며 식별자에 대한 규칙을 준수해야 합니다.
  • [ @source_object= ] 'source_object'
    게시되는 데이터베이스 개체입니다. source_objectsysname이며 기본값은 없습니다. 병합 복제를 사용하여 게시할 수 있는 개체의 유형에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하십시오.
  • [ @type= ] 'type'
    아티클 유형입니다. typesysname이며 기본값은 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 2005 Compact Edition 구독자를 지원하는 데 필요합니다.

    truncate

    대상 테이블을 자릅니다.

  • [ @creation_script= ] 'creation_script'
    구독 데이터베이스에 아티클을 만드는 데 사용하는 아티클 스키마 스크립트(옵션)의 경로 및 이름입니다. creation_script는 **nvarchar(255)**이며 기본값은 NULL입니다.

    [!참고] 생성 스크립트는 SQL Server 2005 Compact Edition 구독자에서 실행되지 않습니다.

  • [ @schema_option= ] schema_option
    지정된 아티클에 대한 스키마 생성 옵션의 비트맵입니다. schema_option은 **binary(8)**이며 다음 값 중 하나 이상의 |(비트 OR) 곱일 수 있습니다.

  • [ @subset_filterclause= ] 'subset_filterclause'
    WHERE 단어를 포함하지 않고 테이블 아티클의 행 필터링을 지정하는 WHERE 절입니다. subset_filterclause는 **nvarchar(1000)**이며 기본값은 빈 문자열입니다.

    ms174329.note(ko-kr,SQL.90).gif중요:
    성능상의 이유로 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_ownersysname이며 기본값은 NULL입니다. NULL인 경우 현재 사용자가 소유자로 간주됩니다.
  • [ @destination_owner= ] 'destination_owner'
    'dbo'가 아닌 경우 구독 데이터베이스에 있는 개체의 소유자입니다. destination_ownersysname이며 기본값은 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_rangebigint이며 기본값은 NULL입니다. identityrangemanagementoptionauto이거나 auto_identity_rangetrue이면 이 매개 변수를 지정해야 합니다.
  • [ @identity_range= ] identity_range
    자동 ID 범위 관리가 사용될 때 게시자와 구독자 모두에게 할당되는 ID 범위 크기를 제어합니다. identity_rangebigint이며 기본값은 NULL입니다. identityrangemanagementoptionauto이거나 auto_identity_rangetrue이면 이 매개 변수를 지정해야 합니다.

    [!참고] identity_range는 이전 버전의 SQL Server를 사용하는 재게시 구독자의 ID 범위 크기를 제어합니다.

  • [ @threshold= ] threshold
    병합 에이전트가 새 ID 범위를 할당할 때 사용되는 범위의 백분율 값입니다. threshold에 지정된 백분율 값이 사용되는 경우, 병합 에이전트가 새로운 ID 범위를 만듭니다. thresholdint이며 기본값은 NULL입니다. identityrangemanagementoptionauto이거나 auto_identity_rangetrue이면 이 매개 변수를 지정해야 합니다.
  • [ @verify_resolver_signature= ] verify_resolver_signature
    병합 복제에 해결 프로그램을 사용하기 전에 디지털 서명을 확인할 것인지 여부를 지정합니다. verify_resolver_signatureint이며 기본값은 1입니다.

    0은 서명을 확인하지 않도록 지정합니다.

    1은 서명이 트러스트된 원본에서 온 것인지 확인하도록 지정합니다.

  • [ @destination_object= ] 'destination_object'
    구독 데이터베이스에 있는 개체의 이름입니다. destination_objectsysname이며 기본값은 @source_object에 있는 값입니다. 이 매개 변수는 아티클이 저장 프로시저, 뷰 및 UDF와 같은 스키마 전용 아티클일 경우에만 지정할 수 있습니다. 지정한 아티클이 테이블 아티클이면 @source_object의 값이 destination_object에 있는 값을 재정의합니다.
  • [ @allow_interactive_resolver= ] 'allow_interactive_resolver'
    아티클에서 대화형 해결 프로그램을 사용하거나 사용하지 않도록 합니다. allow_interactive_resolver는 **nvarchar(5)**이며 기본값은 FALSE입니다. true로 지정된 경우 아티클에서 대화형 해결 프로그램을 사용할 수 있고 false로 지정된 경우 사용할 수 없습니다.

    [!참고] 대화형 해결 프로그램은 SQL Server 2005 Compact Edition 구독자에서 지원되지 않습니다.

  • [ @fast_multicol_updateproc= ] 'fast_multicol_updateproc'
    이 매개 변수는 더 이상 사용되지 않으며 이전 버전의 스크립트와의 호환성을 위해 유지 관리됩니다.
  • [ @check_permissions= ] check_permissions
    병합 에이전트가 변경 사항을 게시자에 적용할 때 확인할 테이블 수준 권한의 비트맵입니다. 병합 프로세스가 사용하는 게시자 로그인/사용자 계정에 올바른 테이블 사용 권한이 없는 경우 잘못된 변경은 충돌로 기록됩니다. check_permissionsint이며 다음 값 중 하나 이상의 |(비트 OR) 곱일 수 있습니다.

    설명

    0x00(기본값)

    사용 권한을 확인하지 않습니다.

    0x10

    구독자에서 실행한 삽입 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.

    0x20

    구독자에서 실행한 업데이트 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.

    0x40

    구독자에서 실행한 삭제 작업이 업로드되기 전에 게시자에서 사용 권한을 확인합니다.

  • [ @force_invalidate_snapshot= ] force_invalidate_snapshot
    이 저장 프로시저가 수행한 작업으로 인해 기존 스냅숏이 무효화될 수도 있습니다. force_invalidate_snapshotbit이며 기본값은 0입니다.

    0을 지정하면 아티클을 추가해도 스냅숏이 무효화되지 않습니다. 저장 프로시저가 새 스냅숏을 필요로 하는 변경을 감지하면 오류가 발생하며 변경이 수행되지 않습니다.

    1을 지정하면 아티클을 추가할 경우 스냅숏이 무효화될 수 있으며 새 스냅숏을 필요로 하는 기존 구독이 있는 경우 사용되지 않을 것으로 표시될 기존 스냅숏과 생성될 새 스냅숏에 대해 사용 권한을 부여합니다. 기존 스냅숏을 사용하여 아티클을 게시에 추가할 때 force_invalidate_snapshot1로 설정됩니다.

  • [ @published_in_tran_pub= ] 'published_in_tran_pub'
    병합 게시의 아티클이 트랜잭션 게시에도 게시됨을 나타냅니다. published_in_tran_pub는 **nvarchar(5)**이며 기본값은 FALSE입니다. true인 경우 아티클이 트랜잭션 게시에도 게시됩니다.
  • [ @force_reinit_subscription= ] force_reinit_subscription
    이 저장 프로시저가 수행한 작업으로 인해 기존 구독을 다시 초기화해야 할 수도 있습니다. force_reinit_subscriptionbit이며 기본값은 0입니다.

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

    1은 병합 아티클을 변경하면 기존 구독이 다시 초기화됨을 의미하며 구독을 다시 초기화할 수 있는 권한을 부여합니다. subset_filterclause에서 매개 변수가 있는 행 필터를 지정하는 경우 force_reinit_subscription1로 설정됩니다.

  • [ @logical_record_level_conflict_detection= ] 'logical_record_level_conflict_detection'
    논리적 레코드의 멤버인 아티클에 대한 충돌 감지 수준을 지정합니다. logical_record_level_conflict_detection은 **nvarchar(5)**이며 기본값은 FALSE입니다.

    true를 지정하면 논리적 레코드에 변경 사항이 발생하면 충돌이 감지됩니다.

    false를 지정하면 column_tracking에 지정된 대로 기본 충돌 감지를 사용합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용을 그룹화를 참조하십시오.

    [!참고] 논리 레코드는 SQL Server 2005 Compact Edition 구독자에서 지원되지 않으므로 이러한 구독자를 지원하려면 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_detectiontrue인 경우 logical_record_level_conflict_resolutiontrue로 설정해야 합니다. 자세한 내용은 논리적 레코드를 사용하여 관련된 행의 변경 내용을 그룹화를 참조하십시오.

    [!참고] 논리 레코드는 SQL Server 2005 Compact Edition 구독자에서 지원되지 않으므로 이러한 구독자를 지원하려면 logical_record_level_conflict_resolution에 대해 false 값을 지정해야 합니다.

  • [ @partition_options= ] partition_options
    아티클의 데이터 분할 방식을 정의합니다. 데이터를 분할하면 모든 행이 하나의 파티션 또는 하나의 구독에만 속한 경우 성능을 최적화할 수 있습니다. partition_optionstinyint이며 다음 값 중 하나일 수 있습니다.

    설명

    0(기본값)

    아티클에 대한 필터링이 정적이거나 각 파티션에 대한 고유한 데이터 하위 집합을 생성하지 않습니다. 즉, 겹치는 파티션입니다.

    1

    파티션이 겹치며 구독자에서 DML(데이터 조작 언어) 업데이트를 수행해도 행이 속한 파티션이 변경되지 않습니다.

    2

    아티클을 필터링하면 겹치지 않는 파티션이 생성되지만 여러 구독자가 동일한 파티션을 받을 수 있습니다.

    3

    아티클을 필터링하면 각 구독에 고유한 겹치지 않는 파티션이 생성됩니다.

    [!참고] 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 partition_options 값은 두 아티클에 대해 동일해야 합니다.

  • [ @processing_order= ] processing_order
    병합 게시에서 아티클의 처리 순서를 나타냅니다. processing_orderint이며 기본값은 0입니다. 0인 경우 아티클이 정렬되지 않으며 다른 값은 이 아티클에 대한 처리 순서의 서수 값을 나타냅니다. 아티클은 최하위에서 최상위의 순서로 처리됩니다. 두 아티클이 같은 값을 가진 경우 처리 순서는 sysmergearticles 시스템 테이블의 아티클 애칭 순서에 따라 결정됩니다. 자세한 내용은 병합 아티클의 처리 순서 지정을 참조하십시오.
  • [ @subscriber_upload_options= ] subscriber_upload_options
    구독 유형이 클라이언트 구독인 구독자에서 수행되는 업데이트에 대한 제한을 정의합니다. 자세한 내용은 다운로드 전용 아티클로 병합 복제 성능 최적화를 참조하십시오. subscriber_upload_optionstinyint이며 다음 값 중 하나일 수 있습니다.

    설명

    0(기본값)

    제한이 없습니다. 구독자의 변경 내용을 게시자에 업로드합니다.

    1

    구독자에서 변경이 허용되지만 변경 내용이 게시자로 업로드되지 않습니다.

    2

    구독자에서 변경이 허용되지 않습니다.

    [!참고] 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 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_trackingfalse로 설정하면 구독자에서 삭제된 행을 게시자에서 수동으로 제거하고 게시자에서 삭제된 행을 구독자에서 수동으로 제거해야 합니다.

    ms174329.note(ko-kr,SQL.90).gif중요:
    delete_trackingfalse로 설정하면 불일치가 발생합니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 delete_tracking 값은 두 아티클에 대해 동일해야 합니다.

    [!참고] delete_tracking 옵션은 새 게시 마법사 또는 게시 속성 대화 상자를 사용하여 설정할 수 없습니다.

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

    [!참고] Microsoft SQL Server 2000 버전 8.00.858 및 그 이전 버전(SP3 포함)을 실행하는 구독자에서의 끌어오기 구독에서는 compensate_for_errorsfalse로 설정되어 있어도 보정 작업이 계속 수행됩니다.

    ms174329.note(ko-kr,SQL.90).gif중요:
    영향을 받는 행의 데이터가 일치하지 않은 것으로 나타날 수 있지만 오류를 처리하면 바로 변경 내용을 적용할 수 있어서 데이터가 일치하게 됩니다. 아티클의 원본 테이블이 이미 다른 게시에 게시된 경우 compensate_for_errors 값은 두 아티클에 대해 동일해야 합니다.
  • [ @stream_blob_columns= ] 'stream_blob_columns'
    BLOB(Binary Large Object) 열을 복제할 때 데이터 스트림 최적화를 사용하도록 지정합니다. stream_blob_columns는 **nvarchar(5)**이며 기본값은 FALSE입니다. true인 경우 최적화를 시도합니다.

    ms174329.note(ko-kr,SQL.90).gif중요:
    이 메모리 최적화를 설정하면 동기화 중에 병합 에이전트의 성능이 저하될 수 있습니다. MB 단위의 데이터가 포함된 열을 복제할 때만 이 옵션을 사용해야 합니다.

    [!참고] 논리적 레코드와 같은 특정 병합 복제 기능은 stream_blob_columnstrue로 설정되어 있어도 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

  • 0x0C034FD1 - 기본 모드 스냅숏을 사용하는 SQL Server 2005 호환 게시입니다.
  • 0x08034FF1 - 문자 모드 스냅숏을 사용하는 SQL Server 2005 호환 게시입니다.
  • 0x30034FF1 - SQL Server 2000 이전 버전의 호환 게시입니다.

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

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버여야 합니다.

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.EmployeeID = 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

참고 항목

참조

sp_changemergearticle(Transact-SQL)
sp_dropmergearticle(Transact-SQL)
sp_helpmergearticle(Transact-SQL)
복제 저장 프로시저(Transact-SQL)

관련 자료

How to: Define an Article (Replication Transact-SQL Programming)
데이터 및 데이터베이스 개체 게시
ID 열 복제
병합 복제의 충돌 감지 및 해결 방법

도움말 및 정보

SQL Server 2005 지원 받기

변경 내역

릴리스 내역

2006년 4월 14일

변경된 내용
  • schema_option 매개 변수의 0x20000000 값에 대한 설명을 업데이트했습니다.

2005년 12월 5일

새로운 내용
  • schema_option 매개 변수에 대해 0x20 옵션을 설정할 때의 제한 사항을 추가했습니다.
  • 게시된 테이블의 열 제한 사항을 추가했습니다.
변경된 내용
  • 테이블 아티클의 기본 스키마 옵션 값에 대한 정보를 업데이트했습니다.