sp_articleview (Transact-SQL)sp_articleview (Transact-SQL)

APLICA-SE A: simSQL Server simBanco de Dados SQL do Azure (somente a Instância Gerenciada) nãoAzure Synapse Analytics (SQL DW) nãoParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cria a exibição que define o artigo publicado, quando uma tabela é filtrada verticalmente ou horizontalmente.Creates the view that defines the published article when a table is filtered vertically or horizontally. Essa exibição é usada como a fonte filtrada de esquema e dados para as tabelas de destino.This view is used as the filtered source of the schema and data for the destination tables. Somente artigos não assinados podem ser modificados por esse procedimento armazenado.Only unsubscribed articles can be modified by this stored procedure. Esse procedimento armazenado é executado no Publicador, no banco de dados publicador.This stored procedure is executed at the Publisher on the publication database.

Ícone de link do tópico Convenções de sintaxe de Transact-SQLTopic link icon Transact-SQL Syntax Conventions

SintaxeSyntax

  
sp_articleview [ @publication = ] 'publication'  
        , [ @article = ] 'article'  
    [ , [ @view_name = ] 'view_name']  
    [ , [ @filter_clause = ] 'filter_clause']  
    [ , [ @change_active = ] change_active ]  
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]  
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]  
    [ , [ @publisher = ] 'publisher' ]  
    [ , [ @refreshsynctranprocs = ] refreshsynctranprocs ]  
    [ , [ @internal = ] internal ]  

ArgumentosArguments

[ @publication = ] 'publication'É o nome da publicação que contém o artigo.[ @publication = ] 'publication' Is the name of the publication that contains the article. a publicação é sysname, sem padrão.publication is sysname, with no default.

[ @article = ] 'article'É o nome do artigo.[ @article = ] 'article' Is the name of the article. o artigo é sysname, sem padrão.article is sysname, with no default.

[ @view_name = ] 'view_name'É o nome da exibição que define o artigo publicado.[ @view_name = ] 'view_name' Is the name of the view that defines the published article. view_name é nvarchar (386) , com um padrão de NULL.view_name is nvarchar(386), with a default of NULL.

[ @filter_clause = ] 'filter_clause'É uma cláusula de restrição (WHERE) que define um filtro horizontal.[ @filter_clause = ] 'filter_clause' Is a restriction (WHERE) clause that defines a horizontal filter. Ao inserir a cláusula de restrição, omita a palavra-chave WHERE.When entering the restriction clause, omit the WHERE keyword. filter_clause é ntext, com um padrão de NULL.filter_clause is ntext, with a default of NULL.

[ @change_active = ] change_activePermite modificar as colunas em publicações que têm assinaturas.[ @change_active = ] change_active Allows modifying the columns in publications that have subscriptions. change_active é um int, com um padrão de 0.change_active is an int, with a default of 0. Se 0, as colunas não serão alteradas.If 0, columns are not changed. Se 1, as exibições poderão ser criadas ou recriadas em artigos ativos que tenham assinaturas.If 1, views can be created or re-created on active articles that have subscriptions.

[ @force_invalidate_snapshot = ] force_invalidate_snapshotO reconhece que a ação executada por esse procedimento armazenado pode invalidar um instantâneo existente.[ @force_invalidate_snapshot = ] force_invalidate_snapshot Acknowledges that the action taken by this stored procedure may invalidate an existing snapshot. force_invalidate_snapshot é um bit, com um padrão de 0.force_invalidate_snapshot is a bit, with a default of 0.

0 especifica que as alterações no artigo não fazem com que o instantâneo seja inválido.0 specifies that changes to the article do not cause the snapshot to be invalid. Se o procedimento armazenado detectar que a alteração requer um novo instantâneo, ocorrerá um erro e nenhuma alteração será feita.If the stored procedure detects that the change does require a new snapshot, an error occurs and no changes are made.

1 especifica que as alterações no artigo podem fazer com que o instantâneo seja inválido e, se houver assinaturas existentes que exijam um novo instantâneo, concederá permissão para o instantâneo existente ser marcado como obsoleto e um novo instantâneo gerado.1 specifies that changes to the article may cause the snapshot to be invalid, and if there are existing subscriptions that would require a new snapshot, gives permission for the existing snapshot to be marked as obsolete and a new snapshot generated.

[ @force_reinit_subscription = ] _force_reinit_subscription_Reconhece que a ação executada por este procedimento armazenado pode exigir que as assinaturas existentes sejam reinicializadas.[ @force_reinit_subscription = ] _force_reinit_subscription_ Acknowledges that the action taken by this stored procedure may require existing subscriptions to be reinitialized. force_reinit_subscription é um bit com um padrão de 0.force_reinit_subscription is a bit with a default of 0.

0 especifica que as alterações no artigo não fazem com que a assinatura seja reinicializada.0 specifies that changes to the article do not cause the subscription to be reinitialized. Se o procedimento armazenado detectar que a alteração exigiria que as assinaturas fossem reinicializadas, ocorrerá um erro e nenhuma alteração será feita.If the stored procedure detects that the change would require subscriptions to be reinitialized, an error occurs and no changes are made.

1 especifica que as alterações no artigo fazem com que a assinatura existente seja reinicializada e dá permissão para que a reinicialização da assinatura ocorra.1 specifies that changes to the article causes existing subscription to be reinitialized, and gives permission for the subscription reinitialization to occur.

[ @publisher = ] 'publisher'Especifica um não MicrosoftMicrosoft SQL ServerSQL Server Publicador.[ @publisher = ] 'publisher' Specifies a non- MicrosoftMicrosoft SQL ServerSQL Server publisher. o Publicador é sysname, com um padrão de NULL.publisher is sysname, with a default of NULL.

Observação

o Publicador não deve ser usado ao publicar SQL ServerSQL Server a partir de um Publicador.publisher should not be used when publishing from a SQL ServerSQL Server Publisher.

[ @refreshsynctranprocs = ] refreshsynctranprocsÉ se os procedimentos armazenados usados para sincronizar a replicação são recriados automaticamente.[ @refreshsynctranprocs = ] refreshsynctranprocs Is if the stored procedures used to synchronize replication are automatically recreated. refreshsynctranprocs é bit, com um padrão de 1.refreshsynctranprocs is bit, with a default of 1.

1 significa que os procedimentos armazenados são recriados.1 means that the stored procedures are re-created.

0 significa que os procedimentos armazenados não são recriados.0 means that the stored procedures are not re-created.

[ @internal = ] internal Identificado apenas para fins informativos.Identified for informational purposes only. Sem suporte.Not supported. A compatibilidade futura não está garantida.Future compatibility is not guaranteed.[ @internal = ] internal Identificado apenas para fins informativos.Identified for informational purposes only. Sem suporte.Not supported. A compatibilidade futura não está garantida.Future compatibility is not guaranteed.

Valores do código de retornoReturn Code Values

0 (êxito) ou 1 (falha)0 (success) or 1 (failure)

ComentáriosRemarks

sp_articleview cria a exibição que define o artigo publicado e insere a ID dessa exibição na coluna sync_objid da tabela sysarticles () Transact-SQL e insere o texto da cláusula de restrição em a coluna filter_clause .sp_articleview creates the view that defines the published article and inserts the ID of this view in the sync_objid column of the sysarticles (Transact-SQL) table, and inserts the text of the restriction clause in the filter_clause column. Se todas as colunas forem replicadas e não houver nenhum filter_clause, o sync_objid na tabela Transact-SQL) sysarticles ( será definido como a ID da tabela base e o uso de sp_articleview não será necessário.If all columns are replicated and there is no filter_clause, the sync_objid in the sysarticles (Transact-SQL) table is set to the ID of the base table, and the use of sp_articleview is not required.

Para publicar uma tabela filtrada verticalmente (ou seja, para filtrar colunas), primeiro execute sp_addarticle sem nenhum parâmetro sync_object , execute sp_articlecolumn (Transact) -SQL uma vez para cada coluna a ser replicada (definindo o filtro vertical) e execute sp_articleview para criar a exibição que define o artigo publicado.To publish a vertically filtered table (that is, to filter columns) first run sp_addarticle with no sync_object parameter, run sp_articlecolumn (Transact-SQL) once for each column to be replicated (defining the vertical filter), and then run sp_articleview to create the view that defines the published article.

Para publicar uma tabela filtrada horizontalmente (ou seja, para filtrar linhas), Execute (sp_addarticle Transact-) SQL sem parâmetro de filtro .To publish a horizontally filtered table (that is, to filter rows), run sp_addarticle (Transact-SQL) with no filter parameter. Execute sp_articlefilter (Transact-SQL), fornecendo todos os parâmetros, incluindo filter_clause.Run sp_articlefilter (Transact-SQL), providing all parameters including filter_clause. Em seguida, execute sp_articleview, fornecendo todos os parâmetros, incluindo o filter_clauseidêntico.Then run sp_articleview, providing all parameters including the identical filter_clause.

Para publicar uma tabela filtrada vertical e horizontalmente, execute sp_addarticle (Transact-SQL) sem parâmetros sync_object ou Filter .To publish a vertically and horizontally filtered table, run sp_addarticle (Transact-SQL) with no sync_object or filter parameters. Execute sp_articlecolumn (Transact-SQL) uma vez para cada coluna a ser replicada e, em seguida, execute (sp_articlefilter) Transact-SQL e sp_articleview.Run sp_articlecolumn (Transact-SQL) once for each column to be replicated, and then run sp_articlefilter (Transact-SQL) and sp_articleview.

Se o artigo já tiver uma exibição que define o artigo publicado, sp_articleview descartará a exibição existente e criará uma nova automaticamente.If the article already has a view that defines the published article, sp_articleview drops the existing view and creates a new one automatically. Se a exibição foi criada manualmente (tipo no Transact (-SQL) sysarticles é 5), a exibição existente não será descartada.If the view was created manually (type in sysarticles (Transact-SQL) is 5), the existing view is not dropped.

Se você criar um procedimento armazenado de filtro personalizado e uma exibição que define o artigo publicado manualmente, não execute sp_articleview.If you create a custom filter stored procedure and a view that defines the published article manually, do not run sp_articleview. Em vez disso, forneça isso como os parâmetros Filter e sync_object para sp_addarticle (Transact)-SQL, juntamente com o valor de tipo apropriado.Instead, provide these as the filter and sync_object parameters to sp_addarticle (Transact-SQL), along with the appropriate type value.

ExemploExample

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õesPermissions

Somente os membros da função de servidor fixa sysadmin ou da função de banco de dados fixa db_owner podem executar sp_articleview.Only members of the sysadmin fixed server role or db_owner fixed database role can execute sp_articleview.

Consulte tambémSee Also

Define an Article Define an Article
Definir e modificar um filtro de linha estático Define and Modify a Static Row Filter
sp_addarticle (Transact-SQL) sp_addarticle (Transact-SQL)
sp_articlefilter (Transact-SQL) sp_articlefilter (Transact-SQL)
sp_changearticle (Transact-SQL) sp_changearticle (Transact-SQL)
sp_droparticle (Transact-SQL) sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL) sp_helparticle (Transact-SQL)
Procedimentos armazenados de replicação (Transact-SQL)Replication Stored Procedures (Transact-SQL)