sp_articleview (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Crea la vista che definisce l'articolo pubblicato quando una tabella viene filtrata in senso verticale o orizzontale. Questa vista viene utilizzata come origine filtrata dello schema e dei dati per le tabelle di destinazione. Solo gli articoli non sottoscritti possono essere modificati tramite questa stored procedure. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Convenzioni di sintassi Transact-SQL

Sintassi

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

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione contenente l'articolo. @publication è sysname, senza impostazione predefinita.

[ @article = ] N'article'

Nome dell'articolo. @article è sysname, senza impostazione predefinita.

[ @view_name = ] N'view_name'

Nome della visualizzazione che definisce l'articolo pubblicato. @view_name è nvarchar(386), con il valore predefinito NULL.

[ @filter_clause = ] N'filter_clause'

Clausola di restrizione (WHERE) che definisce un filtro orizzontale. Quando si immette la clausola di restrizione, omettere la WHERE parola chiave . @filter_clause è nvarchar(max), con il valore predefinito NULL.

[ @change_active = ] change_active

Consente di modificare le colonne delle pubblicazioni a cui sono associate sottoscrizioni. @change_active è int, con un valore predefinito .0

  • Se 0, le colonne non vengono modificate.
  • Se 1, le visualizzazioni possono essere create o ricreate in articoli attivi con sottoscrizioni.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot

Segnala che l'azione eseguita da questa stored procedure potrebbe invalidare uno snapshot esistente. @force_invalidate_snapshot è bit, con il valore predefinito 0.

  • 0 specifica che le modifiche apportate all'articolo non causano l'invalidità dello snapshot. Se la stored procedure rileva che la modifica richiede un nuovo snapshot, viene generato un errore e non viene apportata alcuna modifica.
  • 1 specifica che le modifiche apportate all'articolo potrebbero causare l'invalidità dello snapshot e, se sono presenti sottoscrizioni esistenti che richiedono un nuovo snapshot, concede l'autorizzazione per contrassegnare lo snapshot esistente come obsoleto e un nuovo snapshot generato.

[ @force_reinit_subscription = ] force_reinit_subscription

Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. @force_reinit_subscription è bit, con un valore predefinito .0

  • 0 specifica che le modifiche apportate all'articolo non causano la reinizializzazione della sottoscrizione. Se la stored procedure rileva che la modifica richiede la reinizializzazione delle sottoscrizioni, viene generato un errore e non viene apportata alcuna modifica.
  • 1 specifica che le modifiche apportate all'articolo causano la reinizializzazione della sottoscrizione esistente e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @publisher = ] N'publisher'

Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL

@publisher non deve essere usato durante la pubblicazione da un server di pubblicazione di SQL Server.

[ @refreshsynctranprocs = ] refreshsynctranprocs

Specifica se le stored procedure utilizzate per sincronizzare la replica vengono ricreate automaticamente. @refreshsynctranprocs è bit, con un valore predefinito .1

  • 1 significa che le stored procedure vengono ricreate.
  • 0 significa che le stored procedure non vengono ricreate.

[ @internal = ] internal

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_articleview crea la vista che definisce l'articolo pubblicato e inserisce l'ID di questa vista nella sync_objid colonna della tabella sysarticles (Transact-SQL) e inserisce il testo della clausola di restrizione nella filter_clause colonna . Se tutte le colonne vengono replicate e non filter_clausesono presenti , la sync_objidtabella sysarticles (Transact-SQL) viene impostata sull'ID della tabella di base e l'uso di sp_articleview non è obbligatorio.

Per pubblicare una tabella filtrata verticalmente (ovvero per filtrare le colonne) eseguire sp_addarticle prima di tutto senza parametri @sync_object , eseguire sp_articlecolumn (Transact-SQL) una volta per ogni colonna da replicare (definendo il filtro verticale) e quindi eseguire sp_articleview per creare la vista che definisce l'articolo pubblicato.

Per pubblicare una tabella filtrata orizzontalmente , ovvero per filtrare le righe, eseguire sp_addarticle (Transact-SQL) senza parametri @filter_name . Eseguire sp_articlefilter (Transact-SQL) specificando tutti i parametri inclusi @filter_clause. sp_articleviewEseguire quindi , specificando tutti i parametri che includono il @filter_clause identico.

Per pubblicare una tabella filtrata verticalmente e orizzontalmente, eseguire sp_addarticle (Transact-SQL) senza parametri @sync_object o @filter_name . Eseguire sp_articlecolumn (Transact-SQL) una volta per ogni colonna da replicare e quindi eseguire sp_articlefilter (Transact-SQL) e sp_articleview.

Se l'articolo dispone già di una visualizzazione che definisce l'articolo pubblicato, sp_articleview elimina la visualizzazione esistente e ne crea una nuova automaticamente. Se la vista è stata creata manualmente (type in sysarticles (Transact-SQL) è 5), la vista esistente non viene eliminata.

Se si crea manualmente una stored procedure di filtro personalizzata e una vista che definisce l'articolo pubblicato, non eseguire sp_articleview. Specificare invece questi valori come parametri @filter_name e @sync_object per sp_addarticle (Transact-SQL) insieme al valore @type appropriato.

Esempi

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

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_articleview.