sp_changearticle(Transact-SQL)
적용 대상: SQL Server Azure SQL Managed Instance
트랜잭션 또는 스냅샷 게시에서 아티클의 속성을 변경합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_changearticle
[ [ @publication = ] N'publication' ]
[ , [ @article = ] N'article' ]
[ , [ @property = ] N'property' ]
[ , [ @value = ] N'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] N'publisher' ]
[ ; ]
인수
[ @publication = ] N'publication'
아티클을 포함하는 게시의 이름입니다. @publication sysname이며 기본값은 .입니다NULL
.
[ @article = ] N'article'
속성을 변경할 아티클의 이름입니다. @article sysname이며 기본값은 .입니다NULL
.
[ @property = ] N'property'
변경할 아티클 속성입니다. @property 기본값NULL
인 nvarchar(100)입니다.
[ @value = ] N'value'
아티클 속성의 새 값입니다. @value 기본값NULL
인 nvarchar(255)입니다.
이 표에서는 아티클의 속성과 해당 속성에 대한 값을 설명합니다.
속성 | 값 | 설명 |
---|---|---|
creation_script |
대상 테이블을 만드는 데 사용되는 아티클 스키마 스크립트의 경로 및 이름입니다. 기본값은 NULL 입니다. |
|
del_cmd |
DELETE 실행할 문입니다. 그렇지 않으면 로그에서 생성됩니다. |
|
description |
아티클에 대한 새로운 설명 항목입니다. | |
dest_object |
이전 버전과의 호환성을 위해 제공됩니다. dest_table 을 사용합니다. |
|
dest_table |
새 대상 테이블입니다. | |
destination_owner |
대상 개체의 소유자 이름입니다. | |
filter |
테이블을 필터링하는 데 사용할 새 저장 프로시저(가로 필터링)입니다. 기본값은 NULL 입니다. 피어 투 피어 복제의 게시에 대해 변경할 수 없습니다. |
|
fire_triggers_on_snapshot |
true |
복제된 사용자 트리거는 초기 스냅샷이 적용될 때 실행됩니다. 참고: 트리거를 복제하려면 비트 마스크 값 schema_option 에 값 0x100 이 포함되어야 합니다. |
false |
복제된 사용자 트리거는 초기 스냅샷이 적용될 때 실행되지 않습니다. | |
identity_range |
구독자에 할당된 ID 범위의 크기를 제어합니다. 피어 투 피어 복제의 경우에는 지원되지 않습니다. | |
ins_cmd |
INSERT 실행할 문입니다. 그렇지 않으면 로그에서 생성됩니다. |
|
pre_creation_cmd |
동기화가 적용되기 전에 대상 테이블을 삭제, 삭제 또는 잘라낼 수 있는 사전 생성 명령입니다. | |
none |
명령을 사용하지 않습니다. | |
drop |
대상 테이블을 삭제합니다. | |
delete |
대상 테이블을 삭제합니다. | |
truncate |
대상 테이블을 자립니다. | |
pub_identity_range |
구독자에 할당된 ID 범위의 크기를 제어합니다. 피어 투 피어 복제의 경우에는 지원되지 않습니다. | |
schema_option |
지정된 아티클에 대한 스키마 생성 옵션의 비트맵을 지정합니다. schema_option 이진(8)입니다. 자세한 내용은 설명 섹션을 참조하세요. |
|
0x00 |
스냅샷 에이전트 스크립팅을 사용하지 않도록 설정합니다. | |
0x01 |
개체 만들기(CREATE TABLE CREATE PROCEDURE 등)를 생성합니다. |
|
0x02 |
정의된 경우 아티클의 변경 내용을 전파하는 저장 프로시저를 생성합니다. | |
0x04 |
ID 열은 속성을 사용하여 스크립티됩니다 IDENTITY . |
|
0x08 |
타임스탬프 열을 복제합니다. 설정하지 않으면 타임스탬프 열이 이진 파일로 복제됩니다. | |
0x10 |
해당 클러스터형 인덱스를 생성합니다. | |
0x20 |
UDT(사용자 정의 데이터 형식)를 구독자의 기본 데이터 형식으로 변환합니다. UDT 열에 제약 CHECK 조건이 있거나 DEFAULT , UDT 열이 기본 키의 일부이거나, 계산 열이 UDT 열을 참조하는 경우 이 옵션을 사용할 수 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
0x40 |
해당 비클러스터형 인덱스를 생성합니다. | |
0x80 |
기본 키에 대해 선언된 참조 무결성을 포함합니다. | |
0x100 |
정의된 경우 테이블 아티클에 사용자 트리거를 복제합니다. | |
0x200 |
제약 조건을 FOREIGN KEY 복제합니다. 참조된 테이블이 게시에 속하지 않으면 게시된 테이블의 모든 FOREIGN KEY 제약 조건이 복제되지 않습니다. |
|
0x400 |
제약 조건을 CHECK 복제합니다. |
|
0x800 |
기본값을 복제합니다. | |
0x1000 |
열 수준 데이터 정렬을 복제합니다. | |
0x2000 |
게시된 아티클 원본 개체와 연결된 확장 속성을 복제합니다. | |
0x4000 |
테이블 아티클에 정의된 경우 고유 키를 복제합니다. | |
0x8000 |
테이블 아티클의 기본 키와 고유 키를 문을 사용하여 ALTER TABLE 제약 조건으로 복제합니다.참고: 이 옵션은 더 이상 사용되지 않습니다. 대신 0x80 및 0x4000 을 사용하세요. |
|
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 |
데이터 및 인덱스에 대한 압축 옵션을 복제합니다. 자세한 내용은 Data Compression을 참조하세요. | |
0x800000000 |
FILESTREAM 데이터를 구독자의 자체 파일 그룹에 저장하려면 이 옵션을 설정합니다. 이 옵션을 설정하지 않으면 FILESTREAM 데이터가 기본 파일 그룹에 저장됩니다. 복제는 파일 그룹을 만들지 않습니다. 따라서 이 옵션을 설정하는 경우 구독자에서 스냅샷을 적용하기 전에 파일 그룹을 만들어야 합니다. 스냅샷을 적용하기 전에 개체를 만드는 방법에 대한 자세한 내용은 스냅샷이 적용되기 전과 후에 스크립트 실행을 참조하세요. 관련 옵션을 참조하세요 0x100000000 . |
|
0x1000000000 |
8,000바이트 보다 큰 CLR(공용 언어 런타임) 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 |
지리 및 기하 도형 형식의 열에 대한 인덱스를 복제합니다. | |
0x20000000000 |
열의 SPARSE 특성을 복제합니다. 이 특성에 대한 자세한 내용은 스파스 열 사용을 참조 하세요. |
|
0x40000000000 |
스냅샷 에이전트에서 스크립팅을 사용하도록 설정하여 구독자에 메모리 최적화 테이블을 만듭니다. | |
0x80000000000 |
메모리 최적화 아티클에 대해 클러스터형 인덱스를 비클러스터형 인덱스로 변환합니다. | |
status |
속성의 새 상태를 지정합니다. | |
dts horizontal partitions |
정보를 제공하기 위해서만 확인됩니다. 지원 안 됨. 향후 호환성은 보장되지 않습니다. | |
include column names |
열 이름은 복제된 INSERT 문에 포함됩니다. |
|
no column names |
열 이름은 복제된 INSERT 문에 포함되지 않습니다. |
|
no dts horizontal partitions |
아티클의 가로 파티션은 변환 가능한 구독에 의해 정의되지 않습니다. | |
none |
sysarticles 테이블의 모든 상태 옵션을 지우고 아티클을 비활성으로 표시합니다. | |
parameters |
매개 변수가 있는 명령을 사용하여 변경 내용을 구독자에게 전파합니다. 새 아티클의 기본 설정입니다. | |
string literals |
변경 내용은 문자열 리터럴 값을 사용하여 구독자에 전파됩니다. | |
sync_object |
동기화 출력 파일 생성에 사용하는 테이블 또는 뷰의 이름입니다. 기본값은 NULL 입니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
tablespace |
Oracle 데이터베이스에서 게시된 아티클에 대한 로깅 테이블에서 사용되는 테이블스페이스를 식별합니다. 자세한 내용은 Oracle 테이블스페이스 관리를 참조 하세요. | |
threshold |
배포 에이전트 새 ID 범위를 할당하는 시기를 제어하는 백분율 값입니다. 피어 투 피어 복제의 경우에는 지원되지 않습니다. | |
type |
Oracle 게시자에 대해서는 지원되지 않습니다. | |
logbased |
로그 기반 문서입니다. | |
logbased manualboth |
수동 필터 및 수동 뷰가 있는 로그 기반 아티클입니다. 이 옵션을 사용하려면 해당 속성과 filter 속성도 설정 sync_object 해야 합니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
logbased manualfilter |
수동 필터가 있는 로그 기반 문서입니다. 이 옵션을 사용하려면 해당 속성과 filter 속성도 설정 sync_object 해야 합니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
logbased manualview |
수동 보기가 있는 로그 기반 문서입니다. 이 옵션을 사용하려면 속성도 설정해야 합니다 sync_object . Oracle 게시자에 대해서는 지원되지 않습니다. |
|
indexed viewlogbased |
로그 기반 인덱싱된 뷰 문서입니다. Oracle 게시자에 대해서는 지원되지 않습니다. 이 유형의 아티클에서는 기본 테이블을 별도로 게시할 필요가 없습니다. | |
indexed viewlogbased manualboth |
수동 필터 및 수동 보기가 있는 로그 기반 인덱싱된 뷰 문서입니다. 이 옵션을 사용하려면 해당 속성과 filter 속성도 설정 sync_object 해야 합니다. 이 유형의 아티클에서는 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
indexed viewlogbased manualfilter |
수동 필터가 있는 로그 기반 인덱싱된 뷰 문서입니다. 이 옵션을 사용하려면 해당 속성과 filter 속성도 설정 sync_object 해야 합니다. 이 유형의 아티클에서는 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
indexed viewlogbased manualview |
수동 보기가 있는 로그 기반 인덱싱된 뷰 문서입니다. 이 옵션을 사용하려면 속성도 설정해야 합니다 sync_object . 이 유형의 아티클에서는 기본 테이블을 별도로 게시할 필요가 없습니다. Oracle 게시자에 대해서는 지원되지 않습니다. |
|
upd_cmd |
UPDATE 실행할 문입니다. 그렇지 않으면 로그에서 생성됩니다. |
|
NULL |
NULL |
변경할 수 있는 아티클 속성 목록을 반환합니다. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
이 저장 프로시저에서 수행한 작업이 기존 스냅샷을 무효화할 수 있음을 인정합니다. @force_invalidate_snapshot 비트이며 기본값은 .입니다0
.
0
는 아티클을 변경해도 스냅샷이 잘못되지 않도록 지정합니다. 저장 프로시저에서 변경에 새 스냅샷이 필요하다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.
1
는 아티클을 변경하면 스냅샷이 유효하지 않을 수 있으며, 새 스냅샷이 필요한 기존 구독이 있는 경우 기존 스냅샷을 사용되지 않는 것으로 표시하고 생성된 새 스냅샷에 대한 권한을 부여합니다.
변경될 때 새 스냅샷을 생성해야 하는 속성은 설명 섹션을 참조하세요.
[ @force_reinit_subscription = ] force_reinit_subscription
이 저장 프로시저에서 수행한 작업에 기존 구독을 다시 초기화해야 할 수 있음을 인정합니다. @force_reinit_subscription 비트이며 기본값은 .입니다0
.
0
는 아티클을 변경해도 구독이 다시 초기화되지 않도록 지정합니다. 저장 프로시저에서 변경 시 기존 구독을 다시 초기화해야 한다는 것을 감지하면 오류가 발생하고 변경되지 않습니다.
1
는 아티클을 변경하면 기존 구독이 다시 초기화되고 구독 다시 초기화가 발생할 수 있는 권한을 부여하도록 지정합니다.
변경될 때 모든 기존 구독을 다시 초기화해야 하는 속성은 설명 섹션을 참조하세요.
[ @publisher = ] N'publisher'
SQL Server 이외 게시자를 지정합니다. @publisher sysname이며 기본값은 .입니다NULL
.
참고 항목
SQL Server 게시자의 아티클 속성을 변경할 때는 게시 자를 사용하면 안 됩니다.
반환 코드 값
0
(성공) 또는 1
(실패).
설명
sp_changearticle
는 스냅샷 복제 및 트랜잭션 복제에 사용됩니다.
아티클이 피어 투 피어 트랜잭션 복제를 지원하는 게시에 속하는 경우 , ins_cmd
및 upd_cmd
del_cmd
속성만 변경할 description
수 있습니다.
다음 속성을 변경하려면 새 스냅샷이 생성되어야 하며 @force_invalidate_snapshot 매개 변수의 1
값을 지정해야 합니다.
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
다음 속성을 변경하려면 기존 구독을 다시 초기화해야 하며 @force_reinit_subscription 매개 변수의 1
값을 지정해야 합니다.
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
기존 게시 내에서 전체 게시를 삭제하고 다시 만들지 않고도 아티클을 변경하는 데 사용할 sp_changearticle
수 있습니다.
참고 항목
값을 schema_option
변경할 때 시스템은 비트 업데이트를 수행하지 않습니다. 즉, 사용 하 여 sp_changearticle
설정 schema_option
하는 경우 기존 비트 설정이 해제 될 수 있습니다. 기존 설정을 유지하려면 |를 수행해야 합니다. (비트 OR) 설정하려는 값과 현재 값 schema_option
사이에 sp_helparticle 실행하여 확인할 수 있습니다.
유효한 스키마 옵션
다음 표에서는 복제 유형(위쪽에 표시됨)과 아티클 형식(첫 번째 열 아래에 표시됨)에 따라 허용되는 값을 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 , 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 schema only |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
view schema only |
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 schema only |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
0x01 , 0x20 , 0x2000 , 0x400000 , 0x800000 , 0x2000000 , 0x8000000 , 0x10000000 0x20000000 , 0x40000000 및0x80000000 |
indexed view schema only |
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
의 0x80
경우 값을 사용하도록 설정해야 합니다. SQL Server가 아닌 게시에 대해 지원되는 schema_option
값은 다음과 0x1000
0x02
0x4000
0x10
0x80
0x40
같습니다. 0x01
예제
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
사용 권한
sysadmin 고정 서버 역할 또는 db_owner 고정 데이터베이스 역할의 멤버만 실행할 sp_changearticle
수 있습니다.