Partager via


sp_mergearticlecolumn (Transact-SQL)

Partitionne une publication de fusion verticalement. Cette procédure stockée est exécutée sur la base de données de publication au niveau du serveur de publication.

Icône Lien de rubriqueConventions de la syntaxe de Transact-SQL

Syntaxe

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 ] 

Arguments

  • [ @publication =] 'publication'
    Nom de la publication. Publication est de type sysname, sans valeur par défaut.

  • [ @article =] 'article'
    Nom de l'article dans la publication. article est de type sysname, sans valeur par défaut.

  • [ @column =] 'column'
    Identifie les colonnes sur lesquelles la partition verticale doit être créée. column est de type sysname, avec NULL comme valeur par défaut. Si la valeur NULL est spécifiée et que @operation = N'add', toutes les colonnes de la table source sont ajoutées à l'article par défaut. La valeur de column ne peut pas être NULL si operation a pour valeur drop. Pour exclure des colonnes d'un article, exécutez sp_mergearticlecolumn, puis spécifiez column et @operation = N'drop' pour chaque colonne à supprimer de l'article indiqué.

  • [ @operation =] 'operation'
    État de la réplication. operation est de type nvarchar(4), avec ADD comme valeur par défaut. add spécifie la réplication de la colonne. drop supprime la colonne.

  • [ @schema_replication=] 'schema_replication'
    Indique qu'une modification du schéma sera propagée lors de l'exécution de l'Agent de fusion. schema_replication est de type nvarchar(5), avec FALSE comme valeur par défaut.

    [!REMARQUE]

    Seule la valeur FALSE est prise en charge pour schema_replication.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Active ou désactive la possibilité d'invalider une capture instantanée. force_invalidate_snapshot est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article de fusion n'invalident pas la capture instantanée.

    1 indique que les modifications apportées à l'article de fusion peuvent invalider la capture instantanée, auquel cas l'autorisation nécessaire à cette capture instantanée est accordée.

  • [ **@force_reinit_subscription = ]**force_reinit_subscription
    Active ou désactive la possibilité de réinitialiser l'abonnement. force_reinit_subscription est de type bit, avec 0 comme valeur par défaut.

    0 indique que les modifications apportées à l'article de fusion ne réinitialisent pas l'abonnement.

    1 indique que les modifications apportées à l'article de fusion sont susceptibles d'entraîner la réinitialisation de l'abonnement ; si tel est le cas, l'autorisation nécessaire à cette réinitialisation est accordée.

Valeurs des codes de retour

0 (succès) ou 1 (échec)

Notes

sp_mergearticlecolumn est utilisé pour la réplication de fusion.

La colonne d'identité ne peut pas être supprimée de l'article si la gestion automatique des plages d'identité est utilisée. Pour plus d'informations, consultez Réplication de colonnes d'identité.

Si une application définit une nouvelle partition verticale après la création de la capture instantanée initiale, une nouvelle capture instantanée doit être générée et réappliquée à chaque abonnement. Les captures instantanées sont appliquées lors de l'exécution de la capture instantanée planifiée suivante et de l'Agent de distribution ou de fusion.

Si le suivi de lignes est utilisé pour la détection de conflits (valeur par défaut), la table de base peut inclure 1 024 colonnes au maximum, mais les colonnes doivent être filtrées à partir de l'article afin que 246 colonnes au maximum soient publiées. Si le suivi de colonnes est utilisé, la table de base peut inclure 246 colonnes au maximum. Pour plus d'informations, consultez la section « Niveau de suivi » de Comment la réplication de fusion détecte et résout les conflits.

Exemple

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.EmployeeID = 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

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou du rôle de base de données fixe db_owner peuvent exécuter sp_mergearticlecolumn.