Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op:SQL Server
Partitioneert een mergeerpublicatie verticaal. Deze opgeslagen procedure wordt uitgevoerd bij Publisher in de publicatiedatabase.
Transact-SQL syntaxis-conventies
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'publicatie'
De naam van de publicatie. @publication is sysname, zonder standaard.
[ @article = ] N'artikel'
De naam van het artikel in de publicatie. @article is sysname, zonder standaard.
[ @column = ] N'column'
Identificeert de kolommen waarop de verticale partitie moet worden gemaakt.
@column is een systeemnaam, met als standaard .NULL Als NULL en @operation is ingesteld op add, worden standaard alle kolommen in de brontabel aan het artikel toegevoegd.
@column kan niet als NULL@operation is ingesteld op drop. Om kolommen uit een artikel uit te sluiten, voer sp_mergearticlecolumnje @column uit en specificeer je, en zet @operation je op voor drop elke kolom die uit het opgegeven @article verwijderd moet worden.
[ @operation = ] N'operation'
De replicatiestatus.
@operation is nvarchar(4), met een standaard van add.
-
addmarkeert de kolom voor replicatie. -
dropMaakt de kolom vrij.
[ @schema_replication = ] N'schema_replication'
Specificeert dat een schemawijziging wordt doorgegeven wanneer de Merge Agent wordt uitgevoerd.
@schema_replication is nvarchar(5), met een standaard van false.
Alleen false wordt ondersteund voor @schema_replication.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Hiermee schakelt u de mogelijkheid in of uit om een momentopname ongeldig te maken.
@force_invalidate_snapshot is bit, met een standaardwaarde van 0.
0specificeert dat wijzigingen in het merge-artikel de snapshot niet ongeldig maken.1specificeert dat wijzigingen in het merge-artikel ervoor kunnen zorgen dat de snapshot ongeldig wordt, en als dat het geval is, geeft een waarde van1toestemming voor de nieuwe snapshot om te worden uitgevoerd.
[ @force_reinit_subscription = ] force_reinit_subscription
Hiermee schakelt u de mogelijkheid in of uit om het abonnement opnieuw te laten initialiseren.
@force_reinit_subscription is bit, met een standaardwaarde van 0.
0specificeert dat wijzigingen in het merge-artikel niet leiden tot het opnieuw initialiseren van het abonnement.1specificeert dat wijzigingen in het merge-artikel ertoe kunnen leiden dat het abonnement opnieuw wordt geïntialiseerd, en als dat het geval is, geeft een waarde van1toestemming voor de herinitialisatie van het abonnement.
Codewaarden retourneren
0 (geslaagd) of 1 (mislukt).
Remarks
sp_mergearticlecolumn wordt gebruikt in samenvoegreplicatie.
Een identiteitskolom kan niet uit het artikel worden verwijderd als automatisch identiteitsbereikbeheer wordt gebruikt. Zie Identiteitskolommen repliceren voor meer informatie.
Als een applicatie een nieuwe verticale partitie instelt nadat de eerste snapshot is aangemaakt, moet er een nieuwe snapshot worden gegenereerd en opnieuw op elk abonnement worden toegepast. Snapshots worden toegepast wanneer de volgende geplande snapshot en distributie- of mergeagent worden uitgevoerd.
Als rijtracking wordt gebruikt voor conflictdetectie (de standaard), kan de basistabel maximaal 1.024 kolommen bevatten, maar kolommen moeten uit het artikel worden gefilterd zodat maximaal 246 kolommen worden gepubliceerd. Als kolomtracking wordt gebruikt, kan de basistabel maximaal 246 kolommen bevatten.
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
Alleen leden van de sysadmin-vaste serverrol of db_owner vaste databaserol kunnen uitvoeren sp_mergearticlecolumn.