sp_addarticle(Transact-SQL)
적용 대상: SQL Server
Azure SQL Managed Instance
아티클을 만들어 게시에 추가합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_addarticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @source_table = ] N'source_table' ]
[ , [ @destination_table = ] N'destination_table' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @type = ] N'type' ]
[ , [ @filter = ] N'filter' ]
[ , [ @sync_object = ] N'sync_object' ]
[ , [ @ins_cmd = ] N'ins_cmd' ]
[ , [ @del_cmd = ] N'del_cmd' ]
[ , [ @upd_cmd = ] N'upd_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @description = ] N'description' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @sync_object_owner = ] N'sync_object_owner' ]
[ , [ @filter_owner = ] N'filter_owner' ]
[ , [ @source_object = ] N'source_object' ]
[ , [ @artid = ] artid OUTPUT ]
[ , [ @auto_identity_range = ] N'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 = ] N'identityrangemanagementoption' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]
인수
[ @publication = ] N'publication'
아티클을 포함하는 게시의 이름입니다. 이 이름은 데이터베이스에서 고유해야 합니다. @publication 기본값이 없는 sysname입니다.
[ @article = ] N'article'
아티클의 이름입니다. 이름은 게시 내에서 고유해야 합니다. @article 기본값이 없는 sysname입니다.
[ @source_table = ] N'source_table'
이 매개 변수는 더 이상 사용되지 않습니다. 대신 @source_object 사용합니다. @source_table 기본값NULL
인 nvarchar(386)입니다. @source_table Oracle 게시자에 대해서는 지원되지 않습니다.
[ @destination_table = ] N'destination_table'
대상(구독) 테이블의 이름(@source_table 또는 저장 프로시저와 다른 경우)입니다. @destination_table sysname이며 기본값은 .입니다NULL
. 이 값으로 NULL
설정하면 @source_table @destination_table 같습니다.
[ @vertical_partition = ] N'vertical_partition'
테이블 아티클에서 열 필터링을 사용하거나 사용하지 않도록 설정합니다. @vertical_partition 기본값false
인 nchar(5)입니다.
false
는 세로 필터링이 없음을 나타내고 모든 열을 게시합니다.true
선언된 기본 키, 기본값이 없는 null 허용 열 및 고유 키 열을 제외한 모든 열을 지웁니다. 열은 sp_articlecolumn 사용하여 추가됩니다.
[ @type = ] N'type'
아티클의 형식입니다. @type 기본값NULL
인 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 대신 직렬화 가능한 proc exec 옵션을 사용하는 것이 좋습니다. 자세한 내용은 트랜잭션 복제에서 저장 프로시저 실행 게시의 "저장 프로시저 실행 유형" 섹션을 참조하세요. 변경 데이터 캡처를 사용하는 경우 사용할 수 없습니다. |
proc schema only |
스키마만 있는 프로시저입니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
serializable proc exec |
직렬화 가능한 트랜잭션의 컨텍스트 내에서 실행되는 경우에만 저장 프로시저의 실행을 복제합니다. Oracle 게시자에 대해서는 지원되지 않습니다. 프로시저 실행을 복제하려면 명시적 트랜잭션 내에서도 프로시저를 실행해야 합니다. |
view schema only |
스키마만 사용하여 봅니다. Oracle 게시자에 대해서는 지원되지 않습니다. 이 옵션을 사용하는 경우 기본 테이블도 게시해야 합니다. |
[ @filter = ] N'filter'
테이블을 가로로 필터링하는 데 사용되는 저장 프로시저(FOR REPLICATION을 사용하여 생성됨)입니다. @filter 기본값NULL
인 nvarchar(386)입니다. sp_articleview 실행하고 수동으로 sp_articlefilter 뷰를 만들고 저장 프로시저를 필터링해야 합니다. 그렇지 않은 NULL
경우 필터 프로시저가 만들어지지 않습니다(저장 프로시저가 수동으로 만들어진 것으로 가정).
[ @sync_object = ] N'sync_object'
이 문서의 스냅샷을 나타내는 데 사용되는 데이터 파일을 생성하는 데 사용되는 테이블 또는 뷰의 이름입니다. @sync_object 기본값NULL
인 nvarchar(386)입니다. 이면 NULL
출력 파일을 생성하는 데 사용되는 뷰를 자동으로 만들기 위해 sp_articleview 호출됩니다. 이 문제는 sp_articlecolumn 있는 열을 추가한 후에 발생합니다. 그렇지 않은 NULL
경우 뷰가 만들어지지 않습니다(보기가 수동으로 만들어진 것으로 가정).
[ @ins_cmd = ] N'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 지정되면 대상 테이블 이름 앞에 추가됩니다. 예를 들어 구독자의 ProductCategory 스키마가 소유한 테이블의 Production 경우 매개 변수는 다음과 같습니다 CALL sp_MSins_ProductionProductCategory . 피어 투 피어 복제 토폴로지 <table> 의 아티클에 GUID 값이 추가됩니다. <custom_stored_procedure> 구독자 업데이트에는 지정이 지원되지 않습니다. |
SQL 또는 NULL |
문을 복제합니다 INSERT . 이 문은 INSERT 아티클에 게시된 모든 열에 대한 값을 제공합니다. 이 명령은 삽입에 복제됩니다.INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue) |
자세한 내용은 트랜잭션 아티클을 참조 하세요. 변경 내용을 전파하는 방법을 지정합니다.
[ @del_cmd = ] N'del_cmd'
이 문서에 대한 삭제를 복제할 때 사용되는 복제 명령 유형입니다. @del_cmd nvarchar(255)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
NONE |
아무 동작도 수행되지 않습니다. |
CALLsp_MSdel_<table> (기본값)또는 CALL <custom_stored_procedure_name> |
구독자에서 실행할 저장 프로시저를 호출합니다. 이 복제 방법을 사용하려면 @schema_option 사용하여 저장 프로시저의 자동 생성을 지정하거나 문서의 각 구독자의 대상 데이터베이스에 지정된 저장 프로시저를 만듭니다. <custom_stored_procedure> 는 사용자가 만든 저장 프로시저의 이름입니다. sp_MSdel_<table> 에는 매개 변수의 _table 부분 대신 대상 테이블의 이름이 포함됩니다. @destination_owner 지정되면 대상 테이블 이름 앞에 추가됩니다. 예를 들어 구독자의 ProductCategory 스키마가 소유한 테이블의 Production 경우 매개 변수는 다음과 같습니다 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 = ] N'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 지정되면 대상 테이블 이름 앞에 추가됩니다. 예를 들어 구독자의 ProductCategory 스키마가 소유한 테이블의 Production 경우 매개 변수는 다음과 같습니다 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 지정되면 대상 테이블 이름 앞에 추가됩니다. 예를 들어 구독자의 ProductCategory 스키마가 소유한 테이블의 Production 경우 매개 변수는 다음과 같습니다 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 |
참고 항목
, MCALL
SCALL
XCALL
및 구독자에 전파되는 데이터의 양에 대한 CALL
구문입니다. 이 구문은 CALL
삽입된 열과 삭제된 모든 열에 대한 모든 값을 전달합니다. 구문은 SCALL
영향을 받는 열에 대해서만 값을 전달합니다. 구문은 XCALL
열의 이전 값을 포함하여 변경 여부에 관계없이 모든 열에 대한 값을 전달합니다. 자세한 내용은 트랜잭션 아티클을 참조 하세요. 변경 내용을 전파하는 방법을 지정합니다.
[ @creation_script = ] N'creation_script'
구독 데이터베이스에서 아티클을 만드는 데 사용되는 선택적 아티클 스키마 스크립트의 경로 및 이름입니다. @creation_script 기본값NULL
인 nvarchar(255)입니다.
[ @description = ] N'description'
아티클에 대한 설명 항목입니다. @description 기본값NULL
인 nvarchar(255)입니다.
[ @pre_creation_cmd = ] N'pre_creation_cmd'
해당 아티클에 대한 스냅샷을 적용할 때 구독자에서 같은 이름의 기존 개체가 검색될 경우 시스템이 할 일을 지정합니다. @pre_creation_cmd nvarchar(10)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
none |
명령을 사용하지 않습니다. |
delete |
스냅샷을 적용하기 전에 대상 테이블에서 데이터를 삭제합니다. 아티클을 가로로 필터링하면 필터 절에 지정된 열의 데이터만 삭제됩니다. 가로 필터가 정의된 경우 Oracle 게시자에 대해서는 지원되지 않습니다. |
drop (기본값) |
대상 테이블을 삭제합니다. |
truncate |
대상 테이블을 자립니다. ODBC 또는 OLE DB 구독자에는 유효하지 않습니다. |
[ @filter_clause = ] N'filter_clause'
가로 필터를 정의하는 제한(WHERE) 절입니다. 제한 절을 입력할 때 WHERE 키워드를 생략합니다. @filter_clause 기본값NULL
인 nvarchar(max)입니다. 자세한 내용은 게시된 데이터 필터링을 참조 하세요.
[ @schema_option = ] schema_option
지정된 아티클에 대한 스키마 생성 옵션의 비트 마스크입니다. @schema_option 기본값NULL
인 varbinary(8)이며 | (비트 OR) 은 다음 값 중 하나 이상의 제품입니다.
참고 항목
이 값이 NULL
면 시스템은 다른 아티클 속성에 따라 아티클에 대한 유효한 스키마 옵션을 자동으로 생성합니다. 기본 스키마 옵션은 아티클 형식과 복제 형식의 조합에 따라 선택되는 값을 보여 줍니다.
값 | 설명 |
---|---|
0x00 |
스냅샷 에이전트 스크립팅을 사용하지 않도록 설정하고 @creation_script 사용합니다. |
0x01 |
개체 만들기 스크립트(CREATE TABLE, CREATE PROCEDURE 등)를 생성합니다. 이 값은 저장 프로시저 아티클에 대한 기본값입니다. |
0x02 |
정의된 경우 아티클의 변경 내용을 전파하는 저장 프로시저를 생성합니다. |
0x04 |
ID 열은 IDENTITY 속성을 사용하여 스크립티됩니다. |
0x08 |
타임스탬프 열을 복제합니다. 설정하지 않으면 타임스탬프 열이 이진 파일로 복제됩니다. |
0x10 |
해당 클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않더라도 게시된 테이블에 이미 정의된 경우 기본 키 및 고유 제약 조건과 관련된 인덱스가 생성됩니다. |
0x20 1 |
UDT(사용자 정의 데이터 형식)를 구독자의 기본 데이터 형식으로 변환합니다. UDT 열에 CHECK 또는 DEFAULT 제약 조건이 있거나, UDT 열이 기본 키의 일부이거나, 계산 열이 UDT 열을 참조하는 경우 이 옵션을 사용할 수 없습니다. |
0x40 |
해당 비클러스터형 인덱스를 생성합니다. 이 옵션을 설정하지 않더라도 게시된 테이블에 이미 정의된 경우 기본 키 및 고유 제약 조건과 관련된 인덱스가 생성됩니다. |
0x80 |
기본 키 제약 조건을 복제합니다. 옵션 0x10 및 활성화되지 않은 경우에도 제약 조건과 0x40 관련된 인덱스도 복제됩니다. |
0x100 1 |
정의된 경우 테이블 아티클에 사용자 트리거를 복제합니다. |
0x200 1 |
외래 키 제약 조건을 복제합니다. 참조된 테이블이 게시에 속하지 않으면 게시된 테이블의 모든 외래 키 제약 조건이 복제되지 않습니다. |
0x400 1 |
CHECK 제약 조건을 복제합니다. |
0x800 1 |
기본값을 복제합니다. |
0x1000 |
열 수준 데이터 정렬을 복제합니다. 참고: 대/소문자를 구분하여 비교할 수 있도록 Oracle 게시자에 대해 이 옵션을 설정해야 합니다. |
0x2000 1 |
게시된 아티클 원본 개체와 연결된 확장 속성을 복제합니다. |
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)에 도입된 날짜 및 시간 데이터 형식(날짜, 시간, datetimeoffset 및 datetime2)을 이전 버전의 SQL Server에서 지원되는 데이터 형식으로 변환합니다. |
0x400000000 |
데이터 및 인덱스에 대한 압축 옵션을 복제합니다. 자세한 내용은 데이터 압축을 참조 하세요. |
0x800000000 |
FILESTREAM 데이터를 구독자의 자체 파일 그룹에 저장하려면 이 옵션을 설정합니다. 이 옵션을 설정하지 않으면 FILESTREAM 데이터가 기본 파일 그룹에 저장됩니다. 복제는 파일 그룹을 만들지 않습니다. 따라서 이 옵션을 설정하는 경우 구독자에서 스냅샷을 적용하기 전에 파일 그룹을 만들어야 합니다. 스냅샷을 적용하기 전에 개체를 만드는 방법에 대한 자세한 내용은 스냅샷이 적용되기 전과 후에 스크립트 실행을 참조하세요. 관련 옵션 0x100000000 참조하세요. |
0x1000000000 |
8000바이트 보다 큰 CLR(공용 언어 런타임) UDT(사용자 정의 형식)를 varbinary(max) 로 변환하여 UDT 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 합니다. |
0x2000000000 |
hierarchyid 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 hierarchyid 데이터 형식을 varbinary(max)로 변환합니다. 복제된 테이블에서 hierarchyid 열을 사용하는 방법에 대한 자세한 내용은 hierarchyid(Transact-SQL)를 참조 하세요. |
0x4000000000 |
테이블에서 필터링된 인덱스를 복제합니다. 필터링된 인덱스에 대한 자세한 내용은 필터링된 인덱스 만들기를 참조하세요. |
0x8000000000 |
이러한 형식의 열을 SQL Server 2005(9.x)를 실행하는 구독자에 복제할 수 있도록 지리 및 기하 도형 데이터 형식을 varbinary(max)로 변환합니다. |
0x10000000000 |
지리 및 기하 도형 형식의 열에 대한 인덱스를 복제합니다. |
0x20000000000 |
열에 대한 SPARSE 특성을 복제합니다. 이 특성에 대한 자세한 내용은 스파스 열 사용을 참조 하세요. |
0x40000000000 |
스냅샷 에이전트에서 스크립팅을 사용하도록 설정하여 구독자에 메모리 최적화 테이블을 만듭니다. |
0x80000000000 |
메모리 최적화 아티클에 대해 클러스터형 인덱스를 비클러스터형 인덱스로 변환합니다. |
0x400000000000 |
테이블에 있는 비클러스터형 columnstore 인덱스를 복제합니다. |
0x800000000000 |
테이블에 필터링된 비클러스터형 columnstore 인덱스를 복제합니다. |
NULL |
복제는 @schema_option 기본값으로 자동으로 설정하며, 이 값은 다른 아티클 속성에 따라 달라집니다. 주의 섹션의 "기본 스키마 옵션" 테이블에는 아티클 유형 및 복제 유형에 따라 기본 스키마 옵션이 표시됩니다. SQL Server가 아닌 게시의 기본값은 .입니다 0x050D3 . |
1 Oracle 게시자에 대해서는 지원되지 않습니다.
모든 @schema_option 값이 모든 유형의 복제 및 아티클 형식에 대해 유효한 것은 아닙니다. 설명 섹션의 유효한 스키마 옵션 테이블에는 아티클 형식과 복제 형식의 조합에 따라 선택할 수 있는 유효한 스키마 옵션이 표시됩니다.
[ @destination_owner = ] N'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 = ] N'source_owner'
원본 개체의 소유자입니다. @source_owner sysname이며 기본값은 .입니다NULL
. Oracle 게시자에 대해 @source_owner 지정해야 합니다.
[ @sync_object_owner = ] N'sync_object_owner'
게시된 아티클을 정의하는 뷰의 소유자입니다. @sync_object_owner sysname이며 기본값은 .입니다NULL
.
[ @filter_owner = ] N'filter_owner'
필터의 소유자입니다. @filter_owner sysname이며 기본값은 .입니다NULL
.
[ @source_object = ] N'source_object'
게시할 데이터베이스 개체입니다. @source_object sysname이며 기본값은 .입니다NULL
. @source_table NULL
경우 @source_object 수 NULL
없습니다. @source_object @source_table 대신 사용해야 합니다. 스냅샷 또는 트랜잭션 복제를 사용하여 게시할 수 있는 개체 유형에 대한 자세한 내용은 데이터 및 데이터베이스 개체 게시를 참조 하세요.
[ @artid = ] artid OUTPUT
새 문서의 문서 ID입니다. @artid int 형식의 OUTPUT 매개 변수입니다.
[ @auto_identity_range = ] N'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
아티클이 자동 또는 @auto_identity_range true로 설정된 @identityrangemanagementoption 경우 Publisher에서 범위 크기를 제어합니다. @pub_identity_range 기본값NULL
인 bigint입니다. @pub_identity_range Oracle 게시자에 대해서는 지원되지 않습니다.
[ @identity_range = ] identity_range
아티클이 자동 또는 @auto_identity_range true로 설정된 @identityrangemanagementoption 경우 구독자에서 범위 크기를 제어합니다. @identity_range 기본값NULL
인 bigint입니다. @auto_identity_range true로 설정된 경우 사용됩니다. @identity_range Oracle 게시자에 대해 지원되지 않습니다.
[ @threshold = ] 임계값
배포 에이전트 새 ID 범위를 할당하는 시기를 제어하는 백분율 값입니다. @threshold 지정된 값의 백분율을 사용하면 배포 에이전트 새 ID 범위를 만듭니다. @threshold 기본값NULL
인 int입니다. @identityrangemanagementoption 자동으로 설정되거나 @auto_identity_range true로 설정된 경우에 사용됩니다. @threshold Oracle 게시자에 대해서는 지원되지 않습니다.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
이 저장 프로시저에서 수행한 작업이 기존 스냅샷을 무효화할 수 있음을 인정합니다. @force_invalidate_snapshot 비트이며 기본값은 .입니다0
.
0
는 아티클을 추가해도 스냅샷이 잘못되지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷이 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.1
는 아티클을 추가하면 스냅샷이 유효하지 않을 수 있으며, 새 스냅샷이 필요한 구독이 있는 경우 기존 스냅샷이 사용되지 않는 것으로 표시되고 새 스냅샷이 생성될 수 있는 권한을 부여합니다.
[ @use_default_datatypes = ] use_default_datatypes
Oracle 게시자에서 아티클을 게시할 때 기본 열 데이터 형식 매핑이 사용되는지 여부입니다. @use_default_datatypes 비트이며 기본값은 .입니다1
.
1
= 기본 아티클 열 매핑이 사용됩니다. sp_getdefaultdatatypemapping 실행하여 기본 데이터 형식 매핑을 표시할 수 있습니다.0
= 사용자 지정 아티클 열 매핑이 정의 되므로 sp_articleview 호출sp_addarticle
되지 않습니다.
@use_default_datatypes 설정0
되면 기본값에서 변경되는 각 열 매핑에 대해 sp_changearticlecolumndatatype 한 번 실행해야 합니다. 모든 사용자 지정 열 매핑이 정의되면 sp_articleview 실행해야 합니다.
참고 항목
이 매개 변수는 Oracle 게시자에만 사용해야 합니다. SQL Server 게시자에 대해 @use_default_datatypes 0
설정해도 오류가 발생합니다.
[ @identityrangemanagementoption = ] N'identityrangemanagementoption'
아티클에 대한 ID 범위 관리를 처리하는 방법을 지정합니다. @identityrangemanagementoption nvarchar(10)이며 다음 값 중 하나일 수 있습니다.
값 | 설명 |
---|---|
none |
복제는 명시적 ID 범위 관리를 수행하지 않습니다. 이 옵션은 이전 버전의 SQL Server와의 호환성을 위해서만 권장됩니다. 피어 복제는 허용되지 않습니다. |
manual |
NOT FOR REPLICATION을 사용하여 ID 열을 표시하여 수동 ID 범위 처리를 사용하도록 설정합니다. |
auto |
ID 범위의 자동 관리를 지정합니다. |
NULL (기본값) |
기본값은 none @auto_identity_range 값이 아닌 true 경우입니다. 기본값은 manual 피어 투 피어 토폴로지 기본값입니다(@auto_identity_range 무시됨). |
이전 버전과의 호환성을 위해 @identityrangemanagementoption 값이면 NULL
@auto_identity_range 값이 선택됩니다. 그러나 @identityrangemanagementoption 값이 아닌 NULL
경우 @auto_identity_range 값은 무시됩니다.
자세한 내용은 ID 열 복제를 참조하세요.
[ @publisher = ] N'publisher'
SQL Server 이외 게시자를 지정합니다. @publisher sysname이며 기본값은 .입니다NULL
.
SQL Server 게시자에 아티클을 추가할 때는 @publisher 사용하면 안 됩니다.
[ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot'
초기 스냅샷이 적용될 때 복제된 사용자 트리거가 실행되는 경우 @fire_triggers_on_snapshot 기본값false
인 nvarchar(5)입니다. true
는 스냅샷이 적용될 때 복제된 테이블의 사용자 트리거가 실행됨을 의미합니다. 트리거를 복제하려면 @schema_option 비트 마스크 값에 값0x100
이 포함되어야 합니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_addarticle
는 스냅샷 복제 또는 트랜잭션 복제에 사용됩니다.
기본적으로 복제는 열 데이터 형식이 복제에서 지원되지 않는 경우 원본 테이블에 열을 게시하지 않습니다. 이러한 열을 게시해야 하는 경우 sp_articlecolumn 실행하여 열을 추가해야 합니다.
피어 투 피어 트랜잭션 복제를 지원하는 게시에 아티클을 추가하는 경우 다음 제한이 적용됩니다.
모든 로그 기반 아티클에 대해 매개 변수가 있는 문을 지정해야 합니다. @status 값에 포함
16
해야 합니다.대상 테이블의 이름과 소유자는 원본 테이블과 일치해야 합니다.
아티클을 가로 또는 세로로 필터링할 수 없습니다.
자동 ID 범위 관리는 지원되지 않습니다. @identityrangemanagementoption 수동 값을 지정해야 합니다.
테이블에 타임스탬프 열이 있는 경우 열을 타임스탬프로 복제하려면 @schema_option 0x08 포함해야 합니다.
값은
SQL
@ins_cmd, @upd_cmd 및 @del_cmd 지정할 수 없습니다.
자세한 내용은 피어 투 피어 - 트랜잭션 복제를 참조 하세요.
개체를 게시하면 해당 정의가 구독자에 복사됩니다. 하나 이상의 다른 개체에 의존하는 데이터베이스 개체를 게시하는 경우 참조된 모든 개체를 게시해야 합니다. 예를 들어 테이블에 종속된 뷰를 게시하는 경우 테이블도 게시해야 합니다.
@vertical_partition true로 설정된 경우 마지막 sp_articlecolumn 추가된 후 sp_articleview 호출될 때까지 뷰 만들기를 연기합니다.sp_addarticle
게시에서 구독 업데이트를 허용하고 게시된 테이블에 uniqueidentifier 열이 없는 경우 테이블에 uniqueidentifier 열을 자동으로 추가 sp_addarticle
합니다.
SQL Server 인스턴스가 아닌 구독자에 복제하는 경우(다른 유형의 복제) Transact-SQL 문만 , UPDATE
및 DELETE
명령에 대해 INSERT
지원됩니다.
로그 판독기 에이전트가 실행 중인 경우 피어 투 피어 게시에 아티클을 추가하면 로그 판독기 에이전트와 아티클을 추가하는 프로세스 간에 교착 상태가 발생할 수 있습니다. 이 문제를 방지하려면 피어 투 피어 게시에 아티클을 추가하기 전에 복제 모니터를 사용하여 아티클을 추가하는 노드에서 로그 판독기 에이전트를 중지합니다. 문서를 추가한 후 로그 판독기 에이전트를 다시 시작합니다.
@del_cmd 설정하거나 @ins_cmd NONE
NONE
경우 제한된 업데이트가 발생할 때 명령 전파 UPDATE
가 해당 명령을 보내지 않아 영향을 받을 수도 있습니다. (제한된 업데이트는 구독자에서 쌍으로 DELETE
/INSERT
복제되는 게시자의 문 유형 UPDATE
입니다.)
기본 스키마 옵션
이 표에서는 사용자가 @schema_options 지정하지 않은 경우 복제에 의해 설정된 기본값을 설명합니다. 여기서 이 값은 복제 유형(위쪽에 표시됨)과 아티클 유형(첫 번째 열에 표시됨)에 따라 달라집니다.
아티클 유형 | 트랜잭션 복제 | 스냅샷 복제 |
---|---|---|
집계 스키마만 | 0x01 |
0x01 |
func 스키마만 | 0x01 |
0x01 |
인덱싱된 뷰 스키마만 | 0x01 |
0x01 |
인덱싱된 뷰 로그베이스 | 0x30F3 |
0x3071 |
인덱싱된 뷰 logbase manualboth | 0x30F3 |
0x3071 |
인덱싱된 뷰 로그 기반 수동 필터 | 0x30F3 |
0x3071 |
인덱싱된 뷰 로그 기반 수동 보기 | 0x30F3 |
0x3071 |
logbased | 0x30F3 |
0x3071 |
logbased manualfilter | 0x30F3 |
0x3071 |
logbased manualview | 0x30F3 |
0x3071 |
proc exec | 0x01 |
0x01 |
proc 스키마만 | 0x01 |
0x01 |
serializable proc exec | 0x01 |
0x01 |
스키마만 보기 | 0x01 |
0x01 |
참고 항목
게시가 대기 중인 업데이트 에 사용하도록 설정된 경우 테이블에 표시된 기본값에 @schema_option 값 0x80
이 추가됩니다. SQL Server가 아닌 게시의 기본 @schema_option .0x050D3
유효한 스키마 옵션
이 표에서는 복제 유형(위쪽에 표시됨)과 아티클 유형(첫 번째 열에 표시됨)을 기반으로 @schema_option 허용 가능한 값을 설명합니다.
아티클 유형 | 트랜잭션 복제 | 스냅샷 복제 |
---|---|---|
logbased | 모든 옵션 | 모든 옵션 0x02 |
logbased manualfilter | 모든 옵션 | 모든 옵션 0x02 |
logbased manualview | 모든 옵션 | 모든 옵션 0x02 |
인덱싱된 뷰 로그베이스 | 모든 옵션 | 모든 옵션 0x02 |
인덱싱된 뷰 로그 기반 수동 필터 | 모든 옵션 | 모든 옵션 0x02 |
인덱싱된 뷰 로그 기반 수동 보기 | 모든 옵션 | 모든 옵션 0x02 |
인덱싱된 뷰 logbase manualboth | 모든 옵션 | 모든 옵션 0x02 |
proc exec | 0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
serializable proc exec | 0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
proc 스키마만 | 0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
스키마만 보기 | 0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , 0x2000 , , 0x40000 , 0x100000 , 0x400000 0x200000 , 0x800000 0x2000000 , 0x8000000 0x40000000 및0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , 0x2000 , , 0x40000 , 0x100000 , 0x400000 0x200000 , 0x800000 0x2000000 , 0x8000000 0x40000000 및0x80000000 |
func 스키마만 | 0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
인덱싱된 뷰 스키마만 | 0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , 0x2000 , , 0x40000 , 0x100000 , 0x400000 0x200000 , 0x800000 0x2000000 , 0x8000000 0x40000000 및0x80000000 |
0x01 , 0x010 , 0x020 , 0x040 , 0x0100 , 0x2000 , , 0x40000 , 0x100000 , 0x400000 0x200000 , 0x800000 0x2000000 , 0x8000000 0x40000000 및0x80000000 |
참고 항목
지연 업데이트 게시의 경우 @schema_option 값을 0x8000
0x80
사용하도록 설정해야 합니다. SQL Server가 아닌 게시에 대해 지원되는 @schema_option 값은 다음과 0x40
0x4000
0X8000
0x10
0x1000
0x02
0x80
같습니다. 0x01
예제
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
수 있습니다.