Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:SQL Server
Delar upp en sammanslagningspublikation vertikalt. Den här lagrade proceduren körs i Publisher i publikationsdatabasen.
Transact-SQL syntaxkonventioner
Syntax
sys.sp_mergearticlecolumn
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @column = ] N'column' ]
[ , [ @operation = ] N'operation' ]
[ , [ @schema_replication = ] N'schema_replication' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ ; ]
Arguments
[ @publication = ] N'publicering'
Namnet på publikationen. @publication är sysname, utan standard.
[ @article = ] Inte en artikel'
Namnet på artikeln i publikationen. @article är sysname, utan standard.
[ @column = ] N'column'
Identifierar kolumnerna där den vertikala partitionen ska skapas.
@column är sysname, med standardvärdet .NULL Om NULL och @operation är inställd till add, läggs alla kolumner i källtabellen till artikeln som standard.
@column kan inte vara det NULL när @operation är inställd på drop. För att utesluta kolumner från en artikel, kör sp_mergearticlecolumn och specificera @column, och ställ @operation in för varje drop kolumn som ska tas bort från den angivna @article.
[ @operation = ] N'operation'
Replikeringsstatusen.
@operation är nvarchar(4), med en standard på add.
-
addmarkerar kolumnen för replikation. -
droprensar kolumnen.
[ @schema_replication = ] N'schema_replication'
Specificerar att en schemaändring sprids när Merge Agent körs.
@schema_replication är nvarchar(5), med en standard på false.
Endast false stöds för @schema_replication.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Aktiverar eller inaktiverar möjligheten att få en ögonblicksbild ogiltig.
@force_invalidate_snapshot är bit, med standardvärdet 0.
0specificerar att ändringar i sammanslagningsartikeln inte gör att snapshoten blir ogiltig.1specificerar att ändringar i sammanslagningsartikeln kan göra att ögonblicksbilden blir ogiltig, och om så är fallet ger ett värde på1tillåtelse för att den nya ögonblicksbilden ska kunna uppträda.
[ @force_reinit_subscription = ] force_reinit_subscription
Aktiverar eller inaktiverar möjligheten att få prenumerationen initierad på nytt.
@force_reinit_subscription är lite, med standardvärdet 0.
0specificerar att ändringar i sammanslagningsartikeln inte gör att prenumerationen återinitieras.1specificerar att ändringar i sammanslagningsartikeln kan orsaka att prenumerationen reinitialiseras, och om så är fallet ger ett värde på1tillåtelse för prenumerationsominitialisering.
Returnera kodvärden
0 (lyckades) eller 1 (fel).
Remarks
sp_mergearticlecolumn används vid sammanslagningsreplikation.
En identitetskolumn kan inte tas bort från artikeln om automatisk identitetsområdeshantering används. Mer information finns i Replikera identitetskolumner.
Om en applikation sätter en ny vertikal partition efter att den initiala snapshoten skapats måste en ny snapshot genereras och appliceras på nytt på varje prenumeration. Snapshots appliceras när nästa schemalagda snapshot och distribution eller merge agent körs.
Om radspårning används för konfliktdetektering (standard) kan bastabellen innehålla maximalt 1 024 kolumner, men kolumner måste filtreras från artikeln så att maximalt 246 kolumner publiceras. Om kolumnspårning används kan bastabellen innehålla högst 246 kolumner.
Examples
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
Permissions
Endast medlemmar av sysadmin-fasta serverrollen eller db_owner fasta databasrollen kan köra sp_mergearticlecolumn.