Partilhar via


sp_mergearticlecolumn (Transact-SQL)

Particiona uma publicação de mesclagem verticalmente. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.

Ícone de vínculo de tópicoConvenções de sintaxe Transact-SQL

Sintaxe

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 ] 

Argumentos

  • [ @publication =] 'publication'
    É o nome da publicação. Publication é sysname, sem padrão.

  • [ @article=] 'article'
    É o nome do artigo na publicação. article é sysname, sem padrão.

  • [ @column =] 'column'
    Identifica as colunas nas quais criar a partição vertical. column é sysname, com um padrão NULL. Se for NULL e @operation = N'add', todas as colunas na tabela de origem serão adicionadas ao artigo por padrão. column não pode ser NULL quando operation está definido como drop. Para excluir colunas de um artigo, execute sp_mergearticlecolumn e especifique column e @operation = N'drop' para cada coluna a ser removida do article especificado.

  • [ @operation =] 'operation'
    É o status da replicação. operation é nvarchar(4), com um padrão ADD. add marca a coluna para replicação. drop limpa a coluna.

  • [ @schema_replication=] 'schema_replication'
    Especifica que uma alteração de esquema será propagada quando Merge Agent for executado. schema_replication é nvarchar(5), com um padrão FALSE.

    ObservaçãoObservação

    FALSE tem suporte para schema_replication.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Habilita ou desabilita a capacidade de invalidar um instantâneo. force_invalidate_snapshot é um bit, com um padrão 0.

    0 especifica que as alterações no artigo de mesclagem não invalidam o instantâneo.

    1 especifica que as alterações no artigo de mesclagem podem invalidar o instantâneo e, se esse for o caso, um valor de 1 dá permissão para a ocorrência do novo instantâneo.

  • [ **@force_reinit_subscription = ]**force_reinit_subscription
    Ativa ou desabilita a habilidade de reiniciar a assinatura. force_reinit_subscription é um bit com um padrão 0.

    0 especifica que as alterações no artigo de mesclagem não farão com que a assinatura seja reiniciada.

    1 especifica que as alterações no artigo de mesclagem podem fazer com que a assinatura seja reiniciada e, se esse for o caso, um valor de 1 dá permissão para que a reinicialização da assinatura ocorra.

Valores de código de retorno

0 (êxito) ou 1 (falha)

Comentários

sp_mergearticlecolumn é usado em replicação de mesclagem.

Uma coluna de identidade não poderá ser descartada do artigo se o gerenciamento de intervalo de identidade automático estiver sendo usado. Para obter mais informações, consulte Colunas de identidade de replicação.

Se um aplicativo definir uma nova partição vertical depois que o instantâneo inicial for criado, um novo instantâneo deverá ser gerado e reaplicado a casa assinatura. Instantâneos são aplicados quando o próximo agente de instantâneo, distribuição ou mesclagem agendado é executado.

Se o controle de linha for usado para detecção de conflitos (o padrão), a tabela base poderá incluir no máximo 1.024 colunas, mas as colunas deverão ser filtradas do artigo de modo que seja publicado no máximo 246 colunas. Se rastreamento de coluna for usado, a tabela base poderá incluir no máximo 246 colunas. Para obter mais informações, consulte a seção "Nível de rastreamento" em Como a replicação de mesclagem detecta e soluciona conflitos.

Exemplo

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

Permissões

Somente membros da função de servidor fixa sysadmin ou db_owner podem executar sp_mergearticlecolumn.