다음을 통해 공유


sp_addarticle(Transact-SQL)

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

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

구문

sp_addarticle [ @publication = ] 'publication'  
        , [ @article = ] 'article' 
    [ , [ @source_table = ] 'source_table' ]
    [ , [ @destination_table = ] 'destination_table' ] 
    [ , [ @vertical_partition = ] 'vertical_partition' ] 
    [ , [ @type = ] 'type' ] 
    [ , [ @filter = ] 'filter' ] 
    [ , [ @sync_object= ] 'sync_object' ] 
        [ , [ @ins_cmd = ] 'ins_cmd' ] 
    [ , [ @del_cmd = ] 'del_cmd' ] 
        [ , [ @upd_cmd = ] 'upd_cmd' ] 
    [ , [ @creation_script = ] 'creation_script' ] 
    [ , [ @description = ] 'description' ] 
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ] 
    [ , [ @filter_clause = ] 'filter_clause' ] 
    [ , [ @schema_option = ] schema_option ] 
    [ , [ @destination_owner = ] 'destination_owner' ] 
    [ , [ @status = ] status ] 
    [ , [ @source_owner = ] 'source_owner' ] 
    [ , [ @sync_object_owner = ] 'sync_object_owner' ] 
    [ , [ @filter_owner = ] 'filter_owner' ] 
    [ , [ @source_object = ] 'source_object' ] 
    [ , [ @artid = ] article_ID  OUTPUT ] 
    [ , [ @auto_identity_range = ] 'auto_identity_range' ] 
    [ , [ @pub_identity_range = ] pub_identity_range ] 
    [ , [ @identity_range = ] identity_range ] 
    [ , [ @threshold = ] threshold ] 
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ] 

인수

  • [ @publication = ] 'publication'
    아티클을 포함하는 게시의 이름입니다. 이 이름은 데이터베이스에서 고유해야 합니다. publication는 sysname이며 기본값은 없습니다.

  • [ @article=] 'article'
    아티클의 이름입니다. 이름은 반드시 게시 내에서 고유해야 합니다. article는 sysname이며 기본값은 없습니다.

  • [ @source_table = ] 'source_table'
    이 매개 변수는 더 이상 사용되지 않습니다. 대신 source_object를 사용하십시오.

    이 매개 변수는 Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @destination_table = ] 'destination_table'
    source_table 또는 저장 프로시저와 다른 경우 대상(구독) 테이블의 이름입니다. destination_table은 sysname이며 기본값은 source_table이 destination_table과 동일함을 의미하는 NULL입니다*.*

  • [ @vertical_partition = ] 'vertical_partition'
    테이블 아티클에 열 필터링을 사용하거나 사용하지 않도록 합니다. vertical_partition는 nchar(5)이며 기본값은 FALSE입니다.

    false는 열 필터링을 하지 않고 모든 열을 게시함을 나타냅니다.

    true로 설정하면 선언된 기본 키, 기본값이 없는 Null을 허용하는 열 및 고유 키 열을 제외한 모든 열을 지웁니다. 열은 sp_articlecolumn을 사용하여 추가합니다.

  • [ @type = ] 'type'
    아티클의 유형입니다. type은 sysname이며 다음 값 중 하나일 수 있습니다.

    설명

    aggregate schema only

    스키마가 있는 집계 함수 전용입니다.

    func schema only

    스키마가 있는 함수 전용입니다.

    indexed view logbased

    로그 기반의 인덱싱된 뷰 아티클입니다. Oracle 게시자에 대해서는 지원되지 않습니다. 이 유형의 아티클은 기본 테이블을 별도로 게시할 필요가 없습니다.

    indexed view logbased manualboth

    수동 필터 및 수동 뷰가 있는 로그 기반의 인덱싱된 뷰 아티클입니다. 이 옵션을 사용하려면 sync_object와 filter 매개 변수를 모두 지정해야 합니다. 이 유형의 아티클은 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    indexed view logbased manualfilter

    수동 필터가 있는 로그 기반의 인덱싱된 뷰 아티클입니다. 이 옵션을 사용하려면 sync_object와 filter 매개 변수를 모두 지정해야 합니다. 이 유형의 아티클은 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    indexed view logbased manualview

    수동 뷰가 있는 로그 기반의 인덱싱된 뷰 아티클입니다. 이 옵션을 사용하려면 sync_object 매개 변수를 지정해야 합니다. 이 유형의 아티클은 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    indexed view schema only

    스키마가 있는 인덱싱된 뷰 전용입니다. 이 유형의 아티클은 기본 테이블도 게시해야 합니다.

    logbased(기본값)

    로그 기반 아티클입니다.

    logbased manualboth

    수동 필터 및 수동 뷰가 있는 로그 기반 아티클입니다. 이 옵션을 사용하려면 sync_object와 filter 매개 변수를 모두 지정해야 합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    logbased manualfilter

    수동 필터가 있는 로그 기반 아티클입니다. 이 옵션을 사용하려면 sync_object와 filter 매개 변수를 모두 지정해야 합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    logbased manualview

    수동 뷰가 있는 로그 기반 아티클입니다. 이 옵션을 사용하려면 sync_object 매개 변수를 지정해야 합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    proc exec

    아티클의 모든 구독자로 저장 프로시저의 실행을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다. proc exec 옵션 대신 serializable proc exec 옵션을 사용하는 것이 좋습니다. 자세한 내용은 트랜잭션 복제에서 저장 프로시저 실행 게시의 "저장 프로시저 실행 아티클의 유형" 섹션을 참조하십시오. 변경 데이터 캡처가 설정된 경우 사용할 수 없습니다.

    proc schema only

    스키마가 있는 프로시저 전용입니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    serializable proc exec

    직렬화할 수 있는 트랜잭션 컨텍스트 내에서 실행된 경우에만 저장 프로시저의 실행을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    또한 프로시저 시행을 복제하려면 이 프로시저를 명시적 트랜잭션 내에서 실행해야 합니다.

    view schema only

    스키마가 있는 뷰 전용입니다. Oracle 게시자에 대해서는 지원되지 않습니다. 이 옵션을 사용할 때는 기본 테이블도 게시해야 합니다.

  • [ @filter = ] 'filter'
    FOR REPLICATION으로 생성되며 테이블을 행 필터링하는 데 사용되는 저장 프로시저입니다. filter은 nvarchar(386)이며 기본값은 NULL입니다. 뷰 및 필터 저장 프로시저를 만들려면 sp_articleviewsp_articlefilter를 반드시 수동으로 실행해야 합니다. NULL이 아닌 경우 저장 프로시저가 수동으로 생성되었다고 가정하여 필터 프로시저가 생성되지 않습니다.

  • [ @sync_object = ] 'sync_object'
    이 아티클의 스냅숏을 표시하는 데 사용되는 데이터 파일을 생성하는 테이블 또는 뷰의 이름입니다. sync_object은 nvarchar(386)이며 기본값은 NULL입니다. NULL인 경우 sp_articleview가 호출되어 출력 파일을 생성하는 데 사용되는 뷰를 자동으로 만듭니다. 이런 작업은 sp_articlecolumn을 사용하여 열을 추가한 다음에 수행됩니다. NULL이 아닌 경우 뷰가 수동으로 생성된 것으로 가정하며 뷰가 생성되지 않습니다.

  • [ @ins_cmd = ] 'ins_cmd'
    이 아티클에 대한 삽입을 복제할 때 사용하는 복제 명령 유형입니다. ins_cmd은 nvarchar(255)이며 다음 값 중 하나일 수 있습니다.

    설명

    NONE

    동작이 실행되지 않습니다.

    CALL sp_MSins_table (기본값)

    -또는-

    CALL custom_stored_procedure_name

    구독자에서 실행할 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. custom_stored_procedure는 사용자가 만든 저장 프로시저의 이름입니다. sp_MSins_table의 _table 부분에는 대상 테이블의 이름이 포함됩니다. destination_owner를 지정하면 destination_owner가 대상 테이블 이름 앞에 붙습니다. 예를 들어 구독자에서 Production 스키마가 소유하는 ProductCategory 테이블의 경우 매개 변수는 CALL sp_MSins_ProductionProductCategory가 됩니다. 피어 투 피어 복제 토폴로지에 있는 아티클의 경우 _table이 GUID 값과 함께 추가됩니다. 구독자 업데이트의 경우 custom_stored_procedure를 지정할 수 없습니다.

    SQL 또는 NULL

    INSERT 문을 복제합니다. INSERT 문에는 아티클에 게시된 모든 열에 대한 값이 제공됩니다. 삽입에서 다음 명령이 복제됩니다.

    INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

    자세한 내용은 트랜잭션 아티클에 대한 변경 내용을 전파하는 방법 지정를 참조하십시오.

  • [ @del_cmd =] 'del_cmd'
    이 아티클에 대한 삭제를 복제할 때 사용하는 복제 명령 유형입니다. del_cmd은 nvarchar(255)이며 다음 값 중 하나일 수 있습니다.

    설명

    NONE

    동작이 실행되지 않습니다.

    CALL sp_MSdel_table(기본값)

    -또는-

    CALL custom_stored_procedure_name

    구독자에서 실행할 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. custom_stored_procedure는 사용자가 만든 저장 프로시저의 이름입니다. sp_MSdel_table의 _table 부분에는 대상 테이블의 이름이 포함됩니다. destination_owner를 지정하면 destination_owner가 대상 테이블 이름 앞에 붙습니다. 예를 들어 구독자에서 Production 스키마가 소유하는 ProductCategory 테이블의 경우 매개 변수는 CALL sp_MSdel_ProductionProductCategory가 됩니다. 피어 투 피어 복제 토폴로지에 있는 아티클의 경우 _table이 GUID 값과 함께 추가됩니다. 구독자 업데이트의 경우 custom_stored_procedure를 지정할 수 없습니다.

    XCALL sp_MSdel_table

    -또는-

    XCALL custom_stored_procedure_name

    XCALL 스타일 매개 변수를 사용하는 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. 구독자 업데이트의 경우 사용자가 만든 저장 프로시저를 지정할 수 없습니다.

    SQL 또는 NULL

    DELETE 문을 복제합니다. DELETE 문에는 모든 기본 키 열 값이 제공됩니다. 삭제에서 다음 명령이 복제됩니다.

    DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    자세한 내용은 트랜잭션 아티클에 대한 변경 내용을 전파하는 방법 지정를 참조하십시오.

  • [ @upd_cmd =] 'upd_cmd'
    이 아티클에 대한 업데이트를 복제할 때 사용하는 복제 명령 유형입니다. upd_cmd은 nvarchar(255)이며 다음 값 중 하나일 수 있습니다.

    설명

    NONE

    동작이 실행되지 않습니다.

    CALL sp_MSupd_table

    -또는-

    CALL custom_stored_procedure_name

    구독자에서 실행할 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다.

    MCALL sp_MSupd_table

    -또는-

    MCALL custom_stored_procedure_name

    MCALL 스타일 매개 변수를 사용하는 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. custom_stored_procedure는 사용자가 만든 저장 프로시저의 이름입니다. sp_MSupd_table의 _table 부분에는 대상 테이블의 이름이 포함됩니다. destination_owner를 지정하면 destination_owner가 대상 테이블 이름 앞에 붙습니다. 예를 들어 구독자에서 Production 스키마가 소유하는 ProductCategory 테이블의 경우 매개 변수는 MCALL sp_MSupd_ProductionProductCategory가 됩니다. 피어 투 피어 복제 토폴로지에 있는 아티클의 경우 _table이 GUID 값과 함께 추가됩니다. 구독자 업데이트의 경우 사용자가 만든 저장 프로시저를 지정할 수 없습니다.

    SCALL sp_MSupd_table(기본값)

    -또는-

    SCALL custom_stored_procedure_name

    SCALL 스타일 매개 변수를 사용하는 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. custom_stored_procedure는 사용자가 만든 저장 프로시저의 이름입니다. sp_MSupd_table의 _table 부분에는 대상 테이블의 이름이 포함됩니다. destination_owner를 지정하면 destination_owner가 대상 테이블 이름 앞에 붙습니다. 예를 들어 구독자에서 Production 스키마가 소유하는 ProductCategory 테이블의 경우 매개 변수는 SCALL sp_MSupd_ProductionProductCategory가 됩니다. 피어 투 피어 복제 토폴로지에 있는 아티클의 경우 _table이 GUID 값과 함께 추가됩니다. 구독자 업데이트의 경우 사용자가 만든 저장 프로시저를 지정할 수 없습니다.

    XCALL sp_MSupd_table

    -또는-

    XCALL custom_stored_procedure_name

    XCALL 스타일 매개 변수를 사용하는 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 schema_option을 사용하여 저장 프로시저를 자동으로 만들도록 지정하거나 아티클에 대한 각 구독자의 대상 데이터베이스에 지정한 저장 프로시저를 만듭니다. 구독자 업데이트의 경우 사용자가 만든 저장 프로시저를 지정할 수 없습니다.

    SQL 또는 NULL

    UPDATE 문을 복제합니다. UPDATE 문에는 모든 열 값 및 기본 키 열 값이 제공됩니다. 업데이트에서 다음 명령이 복제됩니다.

    UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    [!참고]

    CALL, MCALL, SCALL 및 XCALL 구문에서 구독자에 전파되는 데이터 양은 각각 다릅니다. CALL 구문은 삽입 및 삭제한 모든 열의 모든 값을 전달합니다. SCALL 구문은 영향을 받은 열 값만 전달합니다. XCALL 구문은 열의 이전 값과 함께 변경 여부에 관계없이 모든 열의 값을 전달합니다. 자세한 내용은 트랜잭션 아티클에 대한 변경 내용을 전파하는 방법 지정를 참조하십시오.

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

  • [ @description =] 'description'
    아티클에 대한 설명 항목입니다. description은 nvarchar(255)이며 기본값은 NULL입니다.

  • [ @pre_creation_cmd =] 'pre_creation_cmd'
    해당 아티클에 대한 스냅숏을 적용할 때 구독자에서 같은 이름의 기존 개체가 검색될 경우 시스템이 할 일을 지정합니다. pre_creation_cmd은 nvarchar(10)이며 다음 값 중 하나일 수 있습니다.

    설명

    없음

    명령을 사용하지 않습니다.

    삭제

    스냅숏을 적용하기 전에 대상 테이블에서 데이터를 삭제합니다. 아티클이 행 필터링되면 필터 절에서 지정한 열에 있는 데이터만 삭제됩니다. 행 필터를 정의하면 Oracle 게시자에 대해서는 지원되지 않습니다.

    drop(기본값)

    대상 테이블을 삭제합니다.

    truncate

    대상 테이블을 자릅니다. ODBC 또는 OLE DB 구독자에는 유효하지 않습니다.

  • [ @filter_clause=] 'filter_clause'
    행 필터를 정의하는 제한(WHERE) 절입니다. 제약 조건 절을 입력할 때는 키워드인 WHERE를 생략합니다. filter_clause은 ntext이며 기본값은 NULL입니다. 자세한 내용은 게시된 데이터 필터링를 참조하십시오.

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

    [!참고]

    이 값이 NULL인 경우 시스템은 다른 아티클 속성에 따라 이 아티클에 대해 유효한 스키마 옵션을 자동으로 생성합니다. 주의에 있는 기본 스키마 옵션 표에서는 아티클 유형과 복제 유형의 조합을 기반으로 하여 선택할 수 있는 값을 보여 줍니다.

    설명

    0x00

    스냅숏 에이전트로 스크립팅을 할 수 없으며 creation_script를 사용합니다.

    0x01

    개체 만들기 스크립트(CREATE TABLE, CREATE PROCEDURE 등)를 생성합니다. 이 값은 저장 프로시저 아티클에 대한 기본값입니다.

    0x02

    정의된 경우 아티클에 대한 변경 내용을 전파하는 저장 프로시저를 생성합니다.

    0x04

    IDENTITY 속성을 사용하여 ID 열이 스크립팅됩니다.

    0x08

    timestamp 열을 복제합니다. 이 값을 설정하지 않은 경우 timestamp 열은 binary로 복제됩니다.

    0x10

    해당 클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않아도 게시된 테이블에 이미 정의되어 있으면 기본 키 및 UNIQUE 제약 조건과 관련된 인덱스가 생성됩니다.

    0x20

    사용자 정의 데이터 형식(UDT)을 구독자에서의 기본 데이터 형식으로 변환합니다. UDT 열에 CHECK 또는 DEFAULT 제약 조건이 있거나 UDT 열이 기본 키의 일부이거나 계산 열이 UDT 열을 참조하는 경우 이 옵션을 사용할 수 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    0x40

    해당 비클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않아도 게시된 테이블에 이미 정의되어 있으면 기본 키 및 UNIQUE 제약 조건과 관련된 인덱스가 생성됩니다.

    0x80

    PRIMARY KEY 제약 조건을 복제합니다. 0x100x40 옵션을 설정하지 않아도 이 제약 조건과 관련된 모든 인덱스도 복제됩니다.

    0x100

    테이블 아티클에 사용자 트리거를 복제합니다(정의된 경우). Oracle 게시자에 대해서는 지원되지 않습니다.

    0x200

    FOREIGN KEY 제약 조건을 복제합니다. 참조되는 테이블이 게시되지 않는 경우 게시된 테이블의 모든 FOREIGN KEY 제약 조건은 복제되지 않습니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    0x400

    CHECK 제약 조건을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    0x800

    기본값을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    0x1000

    열 수준 데이터 정렬을 복제합니다.

    [!참고]

    대/소문자 구분 비교를 사용하려면 Oracle 게시자에 대해 이 옵션을 설정해야 합니다.

    0x2000

    게시된 아티클 원본 개체와 연결된 확장 속성을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

    0x4000

    UNIQUE 제약 조건을 복제합니다. 0x100x40 옵션을 설정하지 않아도 이 제약 조건과 관련된 모든 인덱스도 복제됩니다.

    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(사용자 정의 형식) 형식의 열을 복제할 수 있도록 8000바이트보다 큰 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 형식의 열에 대한 인덱스를 복제합니다.

    0x20000000000

    열에 대한 SPARSE 특성을 복제합니다. 이 특성에 대한 자세한 내용은 스파스 열 사용을 참조하십시오.

    NULL

    복제는 다른 아티클 속성에 따라 schema_option을 기본값으로 자동 설정합니다. 주의 섹션에 있는 “기본 스키마 옵션” 표에서는 아티클 유형과 복제 유형을 기반으로 하는 기본 스키마 옵션을 보여 줍니다.

    SQL Server 이외 게시에 대한 기본값은 0x050D3입니다.

    모든 schema_option 값이 모든 복제 유형 및 아티클 유형에 유효한 것은 아닙니다. 주의 섹션에 있는 유효한 스키마 옵션 표에서는 아티클 유형과 복제 유형의 조합을 기반으로 해서 선택할 수 있는 유효한 스키마 옵션을 보여 줍니다.

  • [ @destination_owner =] 'destination_owner'
    대상 개체의 소유자 이름입니다. destination_owner은 sysname이며 기본값은 NULL입니다. destination_owner를 지정하지 않은 경우 다음 규칙에 따라 자동으로 소유자가 지정됩니다.

    조건

    대상 개체 소유자

    게시는 기본 모드 대량 복사를 사용하여 초기 스냅숏을 생성하며 이는 SQL Server 구독자만 지원합니다.

    기본값은 source_owner 값입니다.

    SQL Server 이외 게시자에서 게시합니다.

    기본값은 대상 데이터베이스의 소유자입니다.

    게시는 문자 모드 대량 복사를 사용하여 초기 스냅숏을 생성하며 이는 SQL Server 이외 구독자를 지원합니다.

    할당되지 않습니다.

    SQL Server 이외 구독자를 지원하려면 destination_owner가 NULL이어야 합니다.

  • [ @status=] status
    아티클이 활성 상태인지 여부와 변경 내용 전파 방법에 대한 추가 옵션을 지정합니다. status은 tinyint이며 다음 값 중 하나 이상의 |(비트 OR) 곱일 수 있습니다.

    설명

    1

    아티클이 활성 상태입니다.

    8

    INSERT 문에 열 이름을 포함합니다.

    16(기본값)

    매개 변수가 있는 문을 사용합니다.

    24

    INSERT 문에 열 이름도 포함하고 매개 변수가 있는 문도 사용합니다.

    64

    정보를 제공하기 위해서만 확인됩니다. 지원되지 않습니다. 향후 호환성은 보장되지 않습니다.

    예를 들어 매개 변수가 있는 문을 사용하는 활성 아티클은 이 열의 값이 17이 되며 값이 0이면 아티클이 비활성 상태에 있고 추가 속성이 정의되어 있지 않다는 것을 의미합니다.

  • [ @source_owner =] 'source_owner'
    원본 개체의 소유자입니다. source_owner은 sysname이며 기본값은 NULL입니다. Oracle 게시자에 대해서는 source_owner를 반드시 지정해야 합니다.

  • [ @sync_object_owner =] 'sync_object_owner'
    게시된 아티클을 정의하는 뷰의 소유자입니다. sync_object_owner은 sysname이며 기본값은 NULL입니다.

  • [ @filter_owner =] 'filter_owner'
    필터의 소유자입니다. filter_owner은 sysname이며 기본값은 NULL입니다.

  • [ @source_object =] 'source_object'
    게시할 데이터베이스 개체입니다. source_object은 sysname이며 기본값은 NULL입니다. source_table이 NULL이면 source_object가 NULL이 될 수 없습니다.source_table 대신 source_object를 사용해야 합니다. 스냅숏 또는 트랜잭션 복제를 사용하여 게시할 수 있는 개체의 유형에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조하십시오.

  • [ @artid = ] article_ID OUTPUT
    새 아티클의 아티클 ID입니다. article_ID는 int이며 기본값은 NULL이고 OUTPUT 매개 변수입니다.

  • [ @auto_identity_range = ] 'auto_identity_range'
    게시를 생성할 때 자동 ID 범위 처리를 게시에 사용하거나 사용하지 않도록 합니다. auto_identity_range은 nvarchar(5)이며 다음 값 중 하나일 수 있습니다.

    설명

    true

    자동 ID 범위 처리를 사용합니다.

    false

    자동 ID 범위 처리를 사용하지 않습니다.

    NULL(기본값)

    ID 범위 처리는 identityrangemanagementoption에 의해 설정됩니다.

    [!참고]

    auto_identity_range는 더 이상 사용되지 않으며 이전 버전과의 호환성을 위해서만 제공됩니다. ID 범위 관리 옵션을 지정하려면 identityrangemanagementoption을 사용해야 합니다. 자세한 내용은 ID 열 복제를 참조하십시오.

  • [ @pub_identity_range = ] pub_identity_range
    아티클에서 identityrangemanagementoption이 auto로 설정되거나 auto_identity_range가 true로 설정되는 경우 게시자의 범위 크기를 제어합니다. pub_identity_range은 bigint이며 기본값은 NULL입니다. Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @identity_range = ] identity_range
    아티클에서 identityrangemanagementoption이 auto로 설정되거나 auto_identity_range가 true로 설정되는 경우 구독자의 범위 크기를 제어합니다. identity_range은 bigint이며 기본값은 NULL입니다. auto_identity_rangetrue로 설정되어 있을 때 사용합니다. Oracle 게시자에 대해서는 지원되지 않습니다.

  • [ @threshold = ] threshold
    배포 에이전트가 새로운 ID 범위를 할당하는 시기를 지정하는 백분율 값입니다. threshold에 지정된 값의 백분율을 사용하는 경우에는 배포 에이전트가 새 ID 범위를 만듭니다. threshold은 bigint이며 기본값은 NULL입니다. identityrangemanagementoption이 auto로 설정되어 있거나 auto_identity_range가 true로 설정되어 있는 경우 사용됩니다. Oracle 게시자에 대해서는 지원되지 않습니다.

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

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

    1은 아티클을 추가할 경우 스냅숏이 무효화될 수 있음을 의미하며 새 스냅숏이 필요한 기존 구독이 있는 경우 오래되어 사용하지 않음으로 표시될 기존 스냅숏과 생성될 새 스냅숏에 대해 사용 권한을 부여합니다.

  • [ @use_default_datatypes = ] use_default_datatypes
    Oracle 게시자에서 아티클을 게시할 때 기본 열 데이터 형식 매핑의 사용 여부입니다. use_default_datatypes는 bit이며 기본값은 1입니다.

    1 = 기본 아티클 열 매핑이 사용됩니다. sp_getdefaultdatatypemapping을 실행하여 기본 데이터 형식 매핑을 표시할 수 있습니다.

    0 = 사용자 지정 아티클 열 매핑이 정의되어 sp_addarticle에서 sp_articleview를 호출하지 않습니다.

    use_default_datatypes가 0으로 설정된 경우 기본값에서 변경된 각 열 매핑에 대해 한 번씩 sp_changearticlecolumndatatype을 실행해야 합니다. 모든 사용자 지정 열 매핑이 정의된 다음 sp_articleview를 실행해야 합니다.

    [!참고]

    이 매개 변수는 Oracle 게시자에 대해서만 사용해야 합니다. SQL Server 게시자에 대해 use_default_datatypes를 0으로 설정하면 오류가 발생합니다.

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

    설명

    none

    복제에서 ID 범위 관리를 명시적으로 수행하지 않습니다. 이 옵션은 이전 버전 SQL Server와의 호환성을 위해서만 사용하는 것이 좋습니다. 피어 복제에 대해서는 허용되지 않습니다.

    manual

    수동 ID 범위 처리를 사용하려면 NOT FOR REPLICATION을 사용하여 ID 열을 표시합니다.

    auto

    ID 범위의 자동 관리를 지정합니다.

    NULL(기본값)

    auto_identity_range가 true로 설정되어 있지 않으면 기본값은 none입니다. 피어 투 피어 토폴로지에서는 auto_identity_range가 무시되고 manual이 기본값이 됩니다.

    이전 버전과의 호환성을 위해 identityrangemanagementoption의 값이 NULL인 경우 auto_identity_range의 값이 확인됩니다. 그러나 identityrangemanagementoption의 값이 NULL이 아닌 경우 auto_identity_range의 값은 무시됩니다.

    자세한 내용은 ID 열 복제를 참조하십시오.

  • [ @publisher = ] 'publisher'
    SQL Server 이외의 게시자를 지정합니다. publisher 은 sysname이며 기본값은 NULL입니다.

    [!참고]

    아티클을 SQL Server 게시자에 추가할 때는 publisher를 사용하면 안 됩니다.

  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    복제된 사용자 트리거를 초기 스냅숏이 적용될 때 실행할지 여부입니다. fire_triggers_on_snapshot는 nvarchar(5)이며 기본값은 FALSE입니다. true는 스냅숏이 적용될 때 복제된 테이블의 사용자 트리거가 실행됨을 의미합니다. 트리거를 복제하려면 schema_option의 비트 마스크 값에 0x100이 포함되어야 합니다.

반환 코드 값

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

주의

sp_addarticle은 스냅숏 복제 또는 트랜잭션 복제에 사용됩니다.

기본적으로 복제는 열 데이터 형식이 복제에서 지원되지 않으면 원본 테이블의 어떤 열도 게시하지 않습니다. 이러한 열을 게시해야 하는 경우 sp_articlecolumn을 실행하여 해당 열을 추가해야 합니다.

피어 투 피어 트랜잭션 복제를 지원하는 게시에 아티클을 추가하는 경우 다음 제한이 적용됩니다.

  • 모든 logbased 아티클에 대해 매개 변수가 있는 문을 지정해야 하며 status 값으로 16을 지정해야 합니다.

  • 대상 테이블의 이름 및 소유자는 원본 테이블과 일치해야 합니다.

  • 아티클을 행 또는 열 필터링할 수 없습니다.

  • 자동 ID 범위 관리는 지원되지 않습니다. identityrangemanagementoption 값을 manual로 지정해야 합니다.

  • 테이블에 timestamp 열이 있는 경우 이 열을 timestamp로 복제하려면 schema_option에 0x08을 포함시켜야 합니다.

  • ins_cmd, upd_cmd 및 del_cmd 값으로 SQL을 지정할 수 없습니다.

자세한 내용은 피어 투 피어 트랜잭션 복제를 참조하십시오.

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

vertical_partition이 true로 설정된 경우 sp_addarticle은 마지막 sp_articlecolumn이 추가된 후에 sp_articleview가 호출될 때까지 뷰 생성을 연기합니다.

게시가 구독의 즉시 업데이트를 허용하고 게시된 테이블에 uniqueidentifier 열이 없는 경우 sp_addarticle은 자동으로 테이블에 uniqueidentifier 열을 추가합니다.

SQL Server 인스턴스가 아닌 구독자에 복제할 때는(다른 유형의 복제) INSERT, UPDATE 및 DELETE 명령에 대해 Transact-SQL 문만 지원됩니다.

로그 판독기 에이전트가 실행 중인 경우 아티클을 피어 투 피어 게시에 추가할 경우 로그 판독기 에이전트와 아티클을 추가하는 프로세스 간에 교착 상태가 발생할 수 있습니다. 이 문제를 방지하려면 아티클을 피어 투 피어 게시에 추가하기 전에 복제 모니터를 사용하여 아티클을 추가 중인 노드에서 로그 판독기를 중지합니다. 아티클을 추가한 후 로그 판독기 에이전트를 다시 시작합니다.

@del\_cmd = 'NONE' 또는 @ins\_cmd = 'NONE'을 설정할 경우 바인딩된 업데이트가 발생하더라도 해당 명령을 전송하지 않아서 UPDATE 명령의 전파에 영향을 줄 수도 있습니다. 바인딩된 업데이트는 구독자에 대한 DELETE/INSERT 쌍으로 복제되는 게시자의 UPDATE 문입니다.

기본 스키마 옵션

이 표에서는 사용자가 schema_options를 지정하지 않은 경우 복제에서 설정되는 기본값을 설명합니다. 이 값은 복제 유형(오른쪽 두 열에 표시됨) 및 아티클 유형(첫 번째 열에 표시됨)에 따릅니다.

아티클 유형

복제 유형

 

 

트랜잭션

스냅숏

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

indexed view logbased manualfilter

0x30F3

0x3071

indexed view logbased manualview

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

proc exec

0x01

0x01

proc schema only

0x01

0x01

serializable proc exec

0x01

0x01

view schema only

0x01

0x01

[!참고]

게시에 지연 업데이트가 가능한 경우 schema_option 값으로 0x80이 테이블에 표시된 기본값에 추가됩니다. SQL Server 이외 게시에 대한 schema_option 기본값은 0x050D3입니다.

유효한 스키마 옵션

이 표에서는 복제 유형(오른쪽 두 행에 표시됨)과 아티클 유형(첫 번째 열에 표시됨)에 기반하여 schema_option의 사용 가능한 값을 설명합니다.

아티클 유형

복제 유형

 

 

트랜잭션

스냅숏

logbased

모든 옵션

0x02를 제외한 모든 옵션

logbased manualfilter

모든 옵션

0x02를 제외한 모든 옵션

logbased manualview

모든 옵션

0x02를 제외한 모든 옵션

indexed view logbased

모든 옵션

0x02를 제외한 모든 옵션

indexed view logbased manualfilter

모든 옵션

0x02를 제외한 모든 옵션

indexed view logbased manualview

모든 옵션

0x02를 제외한 모든 옵션

indexed view logbase manualboth

모든 옵션

0x02를 제외한 모든 옵션

proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

serializable proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

proc schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x400000000x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x400000000x80000000

func schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x400000000x80000000

indexed view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x400000000x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x400000000x80000000

[!참고]

지연 업데이트 게시의 경우 0x80000x80의 schema_option 값은 반드시 사용할 수 있어야 합니다. SQL Server 이외 게시에 대해 지원되는 schema_option 값은 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x40000X8000입니다.

DECLARE @publication    AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran'; 
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL'; 
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';

-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema 
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle 
    @publication = @publication, 
    @article = @table, 
    @source_object = @table,
    @source_owner = @schemaowner, 
    @schema_option = 0x80030F3,
    @vertical_partition = N'true', 
    @type = N'logbased',
    @filter_clause = @filterclause;

-- (Optional) Manually call the stored procedure to create the 
-- horizontal filtering stored procedure. Since the type is 
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter 
    @publication = @publication, 
    @article = @table, 
    @filter_clause = @filterclause, 
    @filter_name = @filtername;

-- Add all columns to the article.
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table;

-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn 
    @publication = @publication, 
    @article = @table, 
    @column = N'DaysToManufacture', 
    @operation = N'drop';

-- (Optional) Manually call the stored procedure to create the 
-- vertical filtering view. Since the type is 'logbased', 
-- this stored procedures is executed automatically.
EXEC sp_articleview 
    @publication = @publication, 
    @article = @table,
    @filter_clause = @filterclause;
GO

사용 권한

sysadmin 고정 서버 역할의 멤버 또는 db_owner 고정 데이터베이스 역할의 멤버만이 sp_addarticle을 실행할 수 있습니다.

참고 항목

참조

sp_articlecolumn(Transact-SQL)

sp_articlefilter(Transact-SQL)

sp_articleview(Transact-SQL)

sp_changearticle(Transact-SQL)

sp_droparticle(Transact-SQL)

sp_helparticle(Transact-SQL)

sp_helparticlecolumns(Transact-SQL)

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

개념

아티클 정의

데이터 및 데이터베이스 개체 게시