sys.sp_mergearticlecolumn (Transact-SQL)

Aplica-se a: SQL Server

Particiona uma publicação de fusão verticalmente. Este procedimento armazenado é executado no Publisher no banco de dados de publicação.

Transact-SQL convenções de sintaxe

Sintaxe

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'publicação'

O nome da publicação. @publication é sysname, sem padrão.

@article [ = ] N'artigo'

O nome do artigo na publicação. @article é sysname, sem padrão.

@column [ = ] N'coluna'

Identifica as colunas sobre as quais criar a partição vertical. @column é sysname, com um padrão de NULL. Se NULL e @operation for definido para add, todas as colunas da tabela de origem são adicionadas ao artigo por defeito. @column não pode ser NULL quando @operation está definido para drop. Para excluir colunas de um artigo, execute sp_mergearticlecolumn e especifique @column, e defina @operation como drop para cada coluna a ser removida da @article especificada.

[ @operation = ] N'operação'

O status da replicação. @operation é nvarchar(4), com um padrão de add.

  • add marca a coluna para replicação.
  • drop limpa a coluna.

[ @schema_replication = ] N'schema_replication'

Especifica que uma alteração de esquema é propagada quando o Merge Agent é executado. @schema_replication é nvarchar(5), com um padrão de false.

false é suportado para @schema_replication.

@force_invalidate_snapshot [ = ] force_invalidate_snapshot

Habilita ou desabilita a capacidade de invalidar um snapshot. @force_invalidate_snapshot é bit, com um padrão de 0.

  • 0 especifica que alterações ao artigo de fusão não tornam o snapshot inválido.

  • 1 especifica que alterações ao artigo de fusão podem tornar o snapshot inválido e, se for esse o caso, um valor de 1 dá permissão para que o novo snapshot ocorra.

@force_reinit_subscription [ = ] force_reinit_subscription

Habilita ou desabilita a capacidade de ter a assinatura reinicializada. @force_reinit_subscription é bit, com um padrão de 0.

  • 0 especifica que alterações ao artigo de fusão não causam a reinicialização da subscrição.

  • 1 especifica que alterações ao artigo de fusão podem causar a reinicialização da subscrição e, nesse caso, um valor de 1 dá permissão para a reinicialização da subscrição.

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Observações

sp_mergearticlecolumn é usado na replicação por fusão.

Uma coluna de identidade não pode ser retirada do artigo se estiver a ser usada a gestão automática de intervalos de identidade. Para obter mais informações, consulte Replicar colunas de identidade.

Se uma aplicação definir uma nova partição vertical após a criação do snapshot inicial, um novo snapshot deve ser gerado e reaplicado a cada subscrição. Os snapshots são aplicados quando o próximo snapshot agendado e o agente de distribuição ou merge são executados.

Se o rastreamento de linhas for usado para deteção de conflitos (o padrão), a tabela base pode incluir um máximo de 1.024 colunas, mas as colunas devem ser filtradas do artigo para que seja publicado um máximo de 246 colunas. Se o rastreamento de colunas for usado, a tabela base poderá incluir um máximo de 246 colunas.

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

Apenas os membros do papel fixo de servidor administrador do sistema ou db_owner papel fixo de base de dados podem executar sp_mergearticlecolumn.