sp_articlecolumn (Transact-SQL)
Usado para especificar colunas incluídas em um artigo para filtrar dados verticalmente em uma tabela publicada. Esse procedimento armazenado é executado no Publicador, no banco de dados de publicação.
Sintaxe
sp_articlecolumn [ @publication = ] 'publication'
, [ @article = ] 'article'
[ , [ @column = ] 'column' ]
[ , [ @operation = ] 'operation' ]
[ , [ @refresh_synctran_procs = ] refresh_synctran_procs ]
[ , [ @ignore_distributor = ] ignore_distributor ]
[ , [ @change_active = ] change_actve ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
[ , [ @internal = ] 'internal' ]
Argumentos
[ @publication=] 'publication'
É o nome da publicação que contém esse artigo. publication é sysname, sem padrão.[ @article=] 'article'
É o nome do artigo. article é sysname, sem padrão.[ @column=] 'column'
É o nome da coluna a ser adicionada ou descartada. column é sysname, com um padrão NULL. Se for NULL, todas as colunas serão publicadas.[ @operation=] 'operation'
Especifica se as colunas devem ser adicionadas ou descartadas em um artigo. operation é nvarchar(5), com um padrão de adição. adicionar marca a coluna para replicação. cancelar desmarca a coluna.[ @refresh_synctran_procs=] refresh_synctran_procs
Especifica se os procedimentos armazenados com suporte para assinaturas de atualização imediata são gerados para corresponderem ao número de colunas replicadas. refresh_synctran_procs é bit, com um padrão 1. Se for 1, os procedimentos armazenados serão regenerados.[ @ignore_distributor =] ignore_distributor
Indica se esse procedimento armazenado é executado sem se conectar ao Distribuidor. ignore_distributor é bit, com um padrão 0. Se for 0, o banco de dados deverá ser habilitado para publicação e o cache do artigo deverá ser atualizado para refletir as novas colunas replicadas por esse artigo. Se for 1, permitirá que as colunas de artigos sejam descartadas para artigos que residem em um banco de dados não publicado; só deve ser usado em situações de recuperação.[ @ change_active = ] change_active
Permite modificar as colunas em publicações que têm assinatura. change_active é um int com um padrão 0. Se for 0, as colunas não serão modificadas. Se for 1, as colunas poderão ser adicionadas ou descartadas de artigos ativos que têm assinaturas.[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Reconhece que a ação tomada por esse procedimento armazenado pode invalidar um instantâneo existente. force_invalidate_snapshot é um bit, com um padrão 0.0 especifica que as alterações no artigo não invalidam o instantâneo. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.
1 especifica que as alterações no artigo podem invalidar o instantâneo e, se houver assinaturas existentes que exigem um novo instantâneo, dará permissão para que o instantâneo existente seja marcado como obsoleto e um novo instantâneo seja gerado.
[@force_reinit_subscription = ] force_reinit_subscription
Reconhece que a ação tomada por esse procedimento armazenado pode requerer que as assinaturas existentes sejam reiniciadas. force_reinit_subscription é um bit, com um padrão 0.0 especifica que as alterações no artigo não fazem com que a assinatura seja reiniciada. Se o procedimento armazenado detectar que a alteração irá requerer que as assinaturas existentes sejam reiniciadas, ocorrerá um erro e nenhuma alteração será feita. 1 especifica que as alterações no artigo fazem com que as assinaturas existentes sejam reiniciadas e dá permissão para que a reinicialização da assinatura ocorra.
[ @publisher= ] 'publisher'
Especifica um Publicador não-MicrosoftSQL Server. publisher é sysname, com um padrão NULL.Observação publisher não deve ser usado com um Publicador SQL Server.
[ @internal= ] 'internal'
Somente para uso interno.
Valores de código de retorno
0 (êxito) ou 1 (falha)
Comentários
sp_articlecolumn é usado em replicação de instantâneo e replicação de transação.
Apenas um artigo não assinado pode ser filtrado usando sp_articlecolumn.
Exemplo
DECLARE @publication AS sysname;
DECLARE @table AS sysname;
DECLARE @filterclause AS nvarchar(500);
DECLARE @filtername AS nvarchar(386);
DECLARE @schemaowner AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @table = N'Product';
SET @filterclause = N'[DiscontinuedDate] IS NULL';
SET @filtername = N'filter_out_discontinued';
SET @schemaowner = N'Production';
-- Add a horizontally and vertically filtered article for the Product table.
-- Manually set @schema_option to ensure that the Production schema
-- is generated at the Subscriber (0x8000000).
EXEC sp_addarticle
@publication = @publication,
@article = @table,
@source_object = @table,
@source_owner = @schemaowner,
@schema_option = 0x80030F3,
@vertical_partition = N'true',
@type = N'logbased',
@filter_clause = @filterclause;
-- (Optional) Manually call the stored procedure to create the
-- horizontal filtering stored procedure. Since the type is
-- 'logbased', this stored procedures is executed automatically.
EXEC sp_articlefilter
@publication = @publication,
@article = @table,
@filter_clause = @filterclause,
@filter_name = @filtername;
-- Add all columns to the article.
EXEC sp_articlecolumn
@publication = @publication,
@article = @table;
-- Remove the DaysToManufacture column from the article
EXEC sp_articlecolumn
@publication = @publication,
@article = @table,
@column = N'DaysToManufacture',
@operation = N'drop';
-- (Optional) Manually call the stored procedure to create the
-- vertical filtering view. Since the type is 'logbased',
-- this stored procedures is executed automatically.
EXEC sp_articleview
@publication = @publication,
@article = @table,
@filter_clause = @filterclause;
GO
Permissões
Somente membros da função de servidor fixa sysadmin ou da função de banco de dados db_owner podem executar sp_articlecolumn.
Consulte também