sp_mergearticlecolumn (Transact-SQL)
Particiona uma publicação de mesclagem verticalmente. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
Convenções da 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 de NULL. Se NULL e @operation = N'add', todas as colunas da 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 de ADD. add marca a coluna para replicação. drop limpa a coluna.[ @schema_replication=] 'schema_replication'
Especifica que uma alteração no esquema será propagada quando Agente de Mesclagem for executado. schema_replication é nvarchar(5), com um padrão de FALSE.Observação Só FALSE tem suporte para schema_replication.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Habilita ou desabilita a capacidade de ter um instantâneo invalidado. force_invalidate_snapshot é um bit, com um padrão de 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
Habilita ou desabilita a capacidade de fazer com que a assinatura seja reinicializada. force_reinit_subscription é um bit com um padrão de 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 Replicar colunas de identidade.
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 de 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 o rastreamento de coluna for usado, a tabela base poderá incluir no máximo 246 colunas.
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.
Consulte também
Referência
Procedimentos armazenados de replicação (Transact-SQL)
Conceitos
Definir e modificar um filtro de junção entre artigos de mesclagem
Definir e modificar um filtro de linha com parâmetros para um artigo de mesclagem