sp_mergearticlecolumn(Transact-SQL)
병합 게시를 열로 분할합니다. 이 저장 프로시저는 게시 데이터베이스의 게시자에서 실행됩니다.
구문
sp_mergearticlecolumn [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @column = ] 'column'
[ , [ @operation = ] 'operation'
[ , [ @schema_replication = ] 'schema_replication' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
인수
[ @publication = ] 'publication'
게시의 이름입니다. Publication은 sysname이며 기본값은 없습니다.[ @article=] 'article'
게시에 있는 아티클의 이름입니다. article은 sysname이며 기본값은 없습니다.[ @column =] 'column'
수직 분할을 만들 열을 식별합니다. column은 sysname이며 기본값은 NULL입니다. NULL 및 @operation = N'add'일 경우 원본 테이블의 모든 열은 기본적으로 아티클에 추가됩니다. operation이 drop으로 설정되면 column은 NULL이 될 수 없습니다. 아티클에서 열을 제외하려면 sp_mergearticlecolumn을 실행하고 지정된 article에서 제거할 각 열에 대해 column과 @operation = N'drop'을 지정합니다.[ @operation =] 'operation'
복제 상태입니다. operation은 **nvarchar(4)**이며 기본값은 ADD입니다. add는 복제할 열을 표시하며 drop은 열을 지웁니다.[ @schema_replication=] 'schema_replication'
병합 에이전트가 실행될 때 스키마 변경 내용이 전파되도록 지정합니다. schema_replication은 **nvarchar(5)**이며 기본값은 FALSE입니다.[!참고]
schema_replication에는 FALSE만 사용할 수 있습니다.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
스냅숏 무효화 기능을 설정하거나 해제합니다. force_invalidate_snapshot은 bit이며 기본값은 0입니다.0은 병합 아티클에 대한 변경으로 인해 스냅숏이 무효화되지 않도록 지정합니다.
1은 병합 아티클에 대한 변경으로 인해 스냅숏이 무효화되도록 지정합니다. 또한 해당되는 경우에 한해 1은 새 스냅숏을 생성할 수 있도록 권한을 부여합니다.
[ **@force_reinit_subscription = ]**force_reinit_subscription
구독 재초기화 기능을 설정하거나 해제합니다. force_reinit_subscription은 bit이며 기본값은 0입니다.0은 병합 아티클에 대한 변경으로 인해 구독이 다시 초기화되지 않도록 지정합니다.
1은 병합 아티클에 대한 변경이 있을 경우 구독이 다시 초기화되도록 지정합니다. 또한 해당되는 경우에 한해 1은 구독을 다시 초기화할 수 있도록 권한을 부여합니다.
반환 코드 값
0(성공) 또는 1(실패)
주의
sp_mergearticlecolumn은 병합 복제에 사용합니다.
자동 ID 범위 관리가 사용되는 경우 아티클에서 ID 열을 삭제할 수 없습니다. 자세한 내용은 ID 열 복제를 참조하십시오.
초기 스냅숏이 생성된 후에 응용 프로그램이 새로운 수직 분할을 설정한 경우 새로운 스냅숏을 생성하여 각 구독에 다시 적용해야 합니다. 스냅숏은 예약된 다음 스냅숏과 배포 또는 병합 에이전트가 실행될 때 적용됩니다.
충돌 감지에 행 추적을 사용하는 경우(기본값) 기본 테이블에 최대 1,024개의 열을 포함할 수 있지만 아티클에서 열을 필터링해야 하므로 최대 246개의 열이 게시됩니다. 열 추적을 사용하면 기본 테이블에 최대 246개의 열을 포함할 수 있습니다. 자세한 내용은 병합 복제의 충돌 감지 및 해결 방법의 "추적 수준" 섹션을 참조하십시오.
예
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 고정 데이터베이스 역할의 멤버만이 sp_mergearticlecolumn을 실행할 수 있습니다.