sp_articlecolumn (Transact-SQL)

Consente di specificare le colonne incluse in un articolo in modo da applicare un filtro verticale ai dati in una tabella pubblicata. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

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' ]

Argomenti

  • [ @publication=] 'publication'
    Nome della pubblicazione che include l'articolo. publication è di tipo sysname e non prevede alcun valore predefinito.

  • [ @article=] 'article'
    Nome dell'articolo. article è di tipo sysname e non prevede alcun valore predefinito.

  • [ @column=] 'column'
    Nome della colonna da aggiungere o eliminare. column è di tipo sysname e il valore predefinito è NULL. Se il valore è NULL, vengono pubblicate tutte le colonne.

  • [ @operation=] 'operation'
    Specifica se aggiungere o eliminare colonne in un articolo. operation è di tipo nvarchar(5) e il valore predefinito è add, con cui la colonna viene contrassegnata per la replica, mentre con il valore drop la colonna viene esclusa dalla replica.

  • [ @refresh_synctran_procs=] refresh_synctran_procs
    Specifica se le stored procedure che supportano le sottoscrizioni ad aggiornamento immediato vengono rigenerate in modo da includere il numero di colonne replicato. refresh_synctran_procs è di tipo bit e il valore predefinito è 1. Se è 1, le stored procedure vengono rigenerate.

  • [ @ignore_distributor =] ignore_distributor
    Indica se la stored procedure viene eseguita senza stabilire la connessione al server di distribuzione. ignore_distributor è di tipo bit e il valore predefinito è 0. Se è 0, il database deve essere abilitato per la pubblicazione e la cache dell'articolo deve essere aggiornata in modo da includere le nuove colonne replicate dall'articolo. Se è 1, è possibile eliminare le colonne dagli articoli inclusi in un database non pubblicato. Impostare questo valore solo in situazioni di recupero.

  • [ @change_active = ] change_active
    Consente la modifica delle colonne in pubblicazioni a cui sono associate sottoscrizioni. change_active è di tipo int e il valore predefinito è 0. Se è 0, le colonne non vengono modificate. Se è 1, è possibile aggiungere o eliminare colonne dagli articoli attivi a cui sono associate sottoscrizioni.

  • [ @force_invalidate_snapshot = ] force_invalidate_snapshot
    Segnala che l'azione eseguita dalla stored procedure potrebbe invalidare uno snapshot esistente. force_invalidate_snapshot è di tipo bit e il valore predefinito è 0.

    0 specifica che le modifiche apportate all'articolo non invalidano lo 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 invalidare lo snapshot e, se sono disponibili sottoscrizioni che richiedono un nuovo snapshot, consente di contrassegnare lo snapshot esistente come obsoleto e di generarne uno nuovo.

  • [@force_reinit_subscription = ] force_reinit_subscription
    Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è di tipo bit e il valore predefinito è 0.

    0 specifica che le modifiche apportate all'articolo non comportano la reinizializzazione della sottoscrizione. Se la stored procedure rileva che la modifica richiede la reinizializzazione delle sottoscrizioni esistenti, viene generato un errore e non viene apportata alcuna modifica. 1 specifica che le modifiche apportate all'articolo comportano la reinizializzazione delle sottoscrizioni esistenti e consente la reinizializzazione.

  • [ @publisher= ] 'publisher'
    Specifica un server di pubblicazione non Microsoft SQL Server. publisher è di tipo sysname e il valore predefinito è NULL.

    Nota

    publisher non deve essere utilizzato con un server di pubblicazione di SQL Server.

  • [ @internal= ] 'internal'
    Solo per uso interno.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

La stored procedure sp_articlecolumn viene utilizzata per la replica snapshot e transazionale.

Solo gli articoli non sottoscritti possono essere filtrati tramite sp_articlecolumn.

Esempio

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 del ruolo predefinito del database db_owner possono eseguire sp_articlecolumn.