Condividi tramite


sp_addarticle (Transact-SQL)

Viene creato un articolo che viene aggiunto a una pubblicazione. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Icona di collegamento a un argomento Convenzioni della sintassi Transact-SQL

Sintassi

sp_addarticle [ @publication = ] 'publication'  
        , [ @article = ] 'article' 
    [ , [ @source_table = ] 'source_table' ]
    [ , [ @destination_table = ] 'destination_table' ] 
    [ , [ @vertical_partition = ] 'vertical_partition' ] 
    [ , [ @type = ] 'type' ] 
    [ , [ @filter = ] 'filter' ] 
    [ , [ @sync_object= ] 'sync_object' ] 
        [ , [ @ins_cmd = ] 'ins_cmd' ] 
    [ , [ @del_cmd = ] 'del_cmd' ] 
        [ , [ @upd_cmd = ] 'upd_cmd' ] 
    [ , [ @creation_script = ] 'creation_script' ] 
    [ , [ @description = ] 'description' ] 
    [ , [ @pre_creation_cmd = ] 'pre_creation_cmd' ] 
    [ , [ @filter_clause = ] 'filter_clause' ] 
    [ , [ @schema_option = ] schema_option ] 
    [ , [ @destination_owner = ] 'destination_owner' ] 
    [ , [ @status = ] status ] 
    [ , [ @source_owner = ] 'source_owner' ] 
    [ , [ @sync_object_owner = ] 'sync_object_owner' ] 
    [ , [ @filter_owner = ] 'filter_owner' ] 
    [ , [ @source_object = ] 'source_object' ] 
    [ , [ @artid = ] article_ID  OUTPUT ] 
    [ , [ @auto_identity_range = ] 'auto_identity_range' ] 
    [ , [ @pub_identity_range = ] pub_identity_range ] 
    [ , [ @identity_range = ] identity_range ] 
    [ , [ @threshold = ] threshold ] 
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @use_default_datatypes = ] use_default_datatypes
    [ , [ @identityrangemanagementoption = ] identityrangemanagementoption ]
    [ , [ @publisher = ] 'publisher' ]
    [ , [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot' ] 

Argomenti

  • [ @publication= ] 'publication'
    Nome della pubblicazione in cui è contenuto l'articolo. Deve essere un nome univoco all'interno del database. publication è di tipo sysname e non prevede alcun valore predefinito.

  • [ @article=] 'article'
    Nome dell'articolo. Deve essere un nome univoco all'interno della pubblicazione. article è di tipo sysname e non prevede alcun valore predefinito.

  • [ @source_table = ] 'source_table'
    Questo parametro è deprecato; usare invece source_object.

    Non è supportato per i server di pubblicazione Oracle.

  • [ @destination_table = ] 'destination_table'
    Nome della tabella (di sottoscrizione) di destinazione, se diversa da source_tableo dalla stored procedure. destination_table è di tipo sysname e il valore predefinito è NULL, che indica che source_table è uguale a destination_table*.*

  • [ @vertical_partition = ] 'vertical_partition'
    Abilita e disabilita l'applicazione di filtri alle colonne in un articolo di tabella. Il parametro vertical_partition è di tipo nchar(5) e il valore predefinito è FALSE.

    false indica che il filtraggio verticale non è attivato e che vengono pertanto pubblicate tutte le colonne.

    true esclude tutte le colonne ad eccezione della chiave primaria dichiarata, le colonne che ammettono valori Null senza valore predefinito e le colonne chiave univoca. Le colonne vengono aggiunte tramite sp_articlecolumn.

  • [ @type = ] 'type'
    Tipo di articolo. type è di tipo sysname. I valori possibili sono i seguenti.

    Valore

    Descrizione

    aggregate schema only

    Funzione di aggregazione con solo schema.

    func schema only

    Funzione con solo schema.

    indexed view logbased

    Articolo di vista indicizzata basato su log. Questo parametro non è supportato per server di pubblicazione Oracle. Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base.

    indexed view logbased manualboth

    Articolo di vista indicizzata basato su log con filtro manuale e vista manuale. Per questa opzione è necessario specificare entrambi i parametri sync_object e filter. Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questo parametro non è supportato per server di pubblicazione Oracle.

    indexed view logbased manualfilter

    Articolo di vista indicizzata basato su log con filtro manuale. Per questa opzione è necessario specificare entrambi i parametri sync_object e filter. Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questo parametro non è supportato per server di pubblicazione Oracle.

    indexed view logbased manualview

    Articolo di vista indicizzata basato su log con vista manuale. Per questa opzione è necessario specificare il parametro sync_object. Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questo parametro non è supportato per server di pubblicazione Oracle.

    indexed view schema only

    Vista indicizzata con solo schema. Per questo tipo di articolo è necessario pubblicare anche la tabella di base.

    logbased (predefinito)

    Articolo basato su un log.

    logbased manualboth

    Articolo basato su log con filtro manuale e vista manuale. Per questa opzione è necessario specificare entrambi i parametri sync_object e filter. Questo parametro non è supportato per server di pubblicazione Oracle.

    logbased manualfilter

    Articolo basato su log con filtro manuale. Per questa opzione è necessario specificare entrambi i parametri sync_object e filter. Questo parametro non è supportato per server di pubblicazione Oracle.

    logbased manualview

    Articolo basato su log con vista manuale. Per questa opzione è necessario specificare il parametro sync_object. Questo parametro non è supportato per server di pubblicazione Oracle.

    proc exec

    Replica l'esecuzione della stored procedure in tutti i Sottoscrittori dell'articolo. Questo parametro non è supportato per server di pubblicazione Oracle. È consigliabile usare l'opzione serializable proc exec anziché exec proc. Per altre informazioni, vedere la sezione "Tipi di articoli di esecuzione delle stored procedure" in Pubblicazione dell'esecuzione delle stored procedure nella replica transazionale. Non disponibile se l'acquisizione dati delle modifiche è abilitata.

    proc schema only

    Procedura con solo schema. Questo parametro non è supportato per server di pubblicazione Oracle.

    serializable proc exec

    Replica l'esecuzione della stored procedure solo se viene eseguita nel contesto di una transazione serializzabile. Questo parametro non è supportato per server di pubblicazione Oracle.

    Per permettere la replica dell'esecuzione della procedura, questa procedura deve essere eseguita anche all'interno di una transazione esplicita.

    view schema only

    Vista con solo schema. Questo parametro non è supportato per server di pubblicazione Oracle. Se si utilizza questa opzione, è necessario pubblicare anche la tabella di base.

  • [ @filter = ] 'filter'
    Stored procedure creata con l'opzione FOR REPLICATION usata per filtrare la tabella in orizzontale. Il parametro filter è di tipo nvarchar(386) e il valore predefinito è NULL. sp_articleview and sp_articlefilter devono essere eseguite manualmente per creare la vista e la stored procedure di filtro. Se diverso da NULL, la procedura di filtro non viene creata, in quanto si presume che venga creata manualmente.

  • [ @sync_object = ] 'sync_object'
    Nome della tabella o vista usata per la creazione del file di dati che rappresenta lo snapshot per l'articolo. Il parametro sync_object è di tipo nvarchar(386) e il valore predefinito è NULL. Se è NULL, viene chiamata la stored procedure sp_articleview per creare automaticamente la vista usata per generare il file di output. Questa operazione viene eseguita dopo l'aggiunta di eventuali colonne tramite sp_articlecolumn. Se il valore è diverso da NULL, non viene creata alcuna vista, in quanto si presume che venga creata manualmente.

  • [ @ins_cmd = ] 'ins_cmd'
    Tipo di comando di replica usato per replicare le operazioni di inserimento per l'articolo. ins_cmd è di tipo nvarchar(255). I valori possibili sono i seguenti.

    Valore

    Descrizione

    NONE

    Non viene eseguita alcuna azione.

    CALL sp_MSins_table (default)

    -oppure-

    CALL custom_stored_procedure_name

    Chiama una stored procedure per l'esecuzione nel Sottoscrittore. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. custom_stored_procedure è il nome di una stored procedure creata dall'utente. sp_MSins_table contiene il nome della tabella di destinazione nella parte _table del parametro. Se si specifica destination_owner, il valore viene aggiunto prima del nome della tabella di destinazione. Ad esempio, per la tabella ProductCategory di proprietà dello schema Production nel Sottoscrittore, il parametro sarebbe CALL sp_MSins_ProductionProductCategory. Per un articolo in una topologia di replica peer-to-peer, al valore _table viene aggiunto un valore GUID. L'impostazione del parametro custom_stored_procedure non è supportata per l'aggiornamento dei Sottoscrittori.

    SQL o NULL

    Replica un'istruzione INSERT. All'istruzione INSERT vengono passati i valori per tutte le colonne pubblicate nell'articolo. Questo comando viene replicato quando si eseguono operazioni di inserimento:

    INSERT INTO <table name> VALUES (c1value, c2value, c3value, ..., cnvalue)

    Per altre informazioni, vedere Impostazione della modalità di propagazione delle modifiche per gli articoli transazionali.

  • [ @del_cmd =] 'del_cmd'
    Tipo di comando di replica usato per replicare le operazioni di eliminazione per l'articolo. del_cmd è di tipo nvarchar(255). I valori possibili sono i seguenti.

    Valore

    Descrizione

    NONE

    Non viene eseguita alcuna azione.

    CALL sp_MSdel_table (predefinito)

    -oppure-

    CALL custom_stored_procedure_name

    Chiama una stored procedure per l'esecuzione nel Sottoscrittore. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. custom_stored_procedure è il nome di una stored procedure creata dall'utente. sp_MSdel_table contiene il nome della tabella di destinazione nella parte _table del parametro. Se si specifica destination_owner, il valore viene aggiunto prima del nome della tabella di destinazione. Ad esempio, per la tabella ProductCategory di proprietà dello schema Production nel Sottoscrittore, il parametro sarebbe CALL sp_MSdel_ProductionProductCategory. Per un articolo in una topologia di replica peer-to-peer, al valore _table viene aggiunto un valore GUID. L'impostazione del parametro custom_stored_procedure non è supportata per l'aggiornamento dei Sottoscrittori.

    XCALL sp_MSdel_table

    -oppure-

    XCALL custom_stored_procedure_name

    Chiama una stored procedure che accetta i parametri di stile XCALL. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. L'impostazione di una stored procedure creata dall'utente non è consentita per l'aggiornamento dei Sottoscrittori.

    SQL o NULL

    Replica un'istruzione DELETE. All'istruzione DELETE vengono passati tutti i valori relativi alle colonne chiave primaria. Questo comando viene replicato quando si eseguono operazioni di eliminazione:

    DELETE FROM <table name> WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    Per altre informazioni, vedere Impostazione della modalità di propagazione delle modifiche per gli articoli transazionali.

  • [ @upd_cmd =] 'upd_cmd'
    Tipo di comando di replica usato per replicare le operazioni di aggiornamento per l'articolo. upd_cmd è di tipo nvarchar(255). I valori possibili sono i seguenti.

    Valore

    Descrizione

    NONE

    Non viene eseguita alcuna azione.

    CALL sp_MSupd_table

    -oppure-

    CALL custom_stored_procedure_name

    Chiama una stored procedure per l'esecuzione nel Sottoscrittore. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo.

    MCALL sp_MSupd_table

    -oppure-

    MCALL custom_stored_procedure_name

    Chiama una stored procedure che accetta i parametri di stile MCALL. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. custom_stored_procedure è il nome di una stored procedure creata dall'utente. sp_MSupd_table contiene il nome della tabella di destinazione nella parte _table del parametro. Se si specifica destination_owner, il valore viene aggiunto prima del nome della tabella di destinazione. Ad esempio, per la tabella ProductCategory di proprietà dello schema Production nel Sottoscrittore, il parametro sarebbe MCALL sp_MSupd_ProductionProductCategory. Per un articolo in una topologia di replica peer-to-peer, al valore _table viene aggiunto un valore GUID. L'impostazione di una stored procedure creata dall'utente non è consentita per l'aggiornamento dei Sottoscrittori.

    SCALL sp_MSupd_table (default)

    -oppure-

    SCALL custom_stored_procedure_name

    Chiama una stored procedure che accetta i parametri di stile SCALL. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. custom_stored_procedure è il nome di una stored procedure creata dall'utente. sp_MSupd_table contiene il nome della tabella di destinazione nella parte _table del parametro. Se si specifica destination_owner, il valore viene aggiunto prima del nome della tabella di destinazione. Ad esempio, per la tabella ProductCategory di proprietà dello schema Production nel Sottoscrittore, il parametro sarebbe SCALL sp_MSupd_ProductionProductCategory. Per un articolo in una topologia di replica peer-to-peer, al valore _table viene aggiunto un valore GUID. L'impostazione di una stored procedure creata dall'utente non è consentita per l'aggiornamento dei Sottoscrittori.

    XCALL sp_MSupd_table

    -oppure-

    XCALL custom_stored_procedure_name

    Chiama una stored procedure che accetta i parametri di stile XCALL. Per adottare questo metodo di replica, usare schema_option per specificare la creazione automatica della stored procedure oppure creare la stored procedure specificata nel database di destinazione di ogni Sottoscrittore dell'articolo. L'impostazione di una stored procedure creata dall'utente non è consentita per l'aggiornamento dei Sottoscrittori.

    SQL o NULL

    Replica un'istruzione UPDATE. All'istruzione UPDATE vengono passati tutti i valori delle colonne e i valori delle colonne chiave primaria. Questo comando viene replicato quando si eseguono operazioni di aggiornamento:

    UPDATE <table name> SET c1 = c1value, SET c2 = c2value, SET cn = cnvalue WHERE pkc1 = pkc1value AND pkc2 = pkc2value AND pkcn = pkcnvalue

    [!NOTA]

    Nel Sottoscrittore vengono propagate quantità di dati diverse a seconda che si utilizzi la sintassi CALL, MCALL o XCALL. Tramite la sintassi CALL vengono passati tutti i valori di tutte le colonne inserite ed eliminate, tramite la sintassi di SCALL vengono passati solo i valori delle colonne modificate, mentre tramite la sintassi XCALL vengono passati i valori di tutte le colonne, modificate o meno, insieme al valore precedente della colonna. Per altre informazioni, vedere Impostazione della modalità di propagazione delle modifiche per gli articoli transazionali.

  • [ @creation_script =] 'creation_script'
    Percorso e nome di uno script facoltativo dello schema dell'articolo usato per creare l'articolo nel database di sottoscrizione. Il parametro creation_script è di tipo nvarchar(255) e il valore predefinito è NULL.

  • [ [ @description = ] 'description'
    Voce descrittiva per l'articolo. Il parametro description è di tipo nvarchar(255) e il valore predefinito è NULL.

  • [ @pre_creation_cmd =] 'pre_creation_cmd'
    Specifica l'azione eseguita dal sistema se nel Sottoscrittore viene rilevato un oggetto esistente con lo stesso nome durante l'applicazione dello snapshot per l'articolo. pre_creation_cmd è di tipo nvarchar(10). I valori possibili sono i seguenti.

    Valore

    Descrizione

    nessuno

    Non utilizza alcun comando.

    eliminazione

    Elimina i dati dalla tabella di destinazione prima di applicare lo snapshot. Se l'articolo è filtrato in modo orizzontale, vengono eliminati solo i dati nelle colonne specificate dalla clausola di filtro. Valore non supportato per i server di pubblicazione Oracle quando è definito un filtro orizzontale.

    drop (predefinito)

    Rimuove la tabella di destinazione.

    truncate

    Tronca la tabella di destinazione. Questo valore non è valido per i Sottoscrittori ODBC o OLE DB.

  • [ @filter_clause=] 'filter_clause'
    Clausola di restrizione (WHERE) che definisce un filtro orizzontale. Quando si specifica la clausola di restrizione, omettere la parola chiave WHERE. Il parametro filter_clause è di tipo ntext e il valore predefinito è NULL. Per altre informazioni, vedere Filtro dei dati pubblicati.

  • [ @schema_option =] schema_option
    Maschera di bit dell'opzione di generazione dello schema per l'articolo specificato. schema_option è di tipo binary(8) e può essere il prodotto | (OR bit per bit) di uno o più dei valori seguenti:

    [!NOTA]

    Se è NULL, il sistema genera automaticamente un'opzione di schema valida per l'articolo in base alle proprietà dell'articolo. Nella tabella Opzioni predefinite dello schema riportata nella sezione Osservazioni vengono descritti i valori scelti in base alle varie combinazioni di tipo di articolo e tipo di replica.

    Valore

    Descrizione

    0x00

    Disabilita la creazione di script eseguita dall'agente snapshot e utilizza creation_script.

    0x01

    Genera lo script per la creazione di oggetti (CREATE TABLE, CREATE PROCEDURE e così via). Questo è il valore predefinito per gli articoli di stored procedure.

    0x02

    Genera le stored procedure che propagano le eventuali modifiche per l'articolo.

    0x04

    Gli script per le colonne Identity vengono creati tramite la proprietà IDENTITY.

    0x08

    Replica le colonne di tipo timestamp. Se non si imposta questo valore, le colonne timestamp vengono replicate come binary.

    0x10

    Genera un indice cluster corrispondente. Anche se questa opzione non viene impostata, se sono già definiti in una tabella pubblicata, gli indici correlati alle chiavi primarie e i vincoli UNIQUE vengono generati.

    0x20

    Converte i tipi di dati definiti dall'utente (UDT) in tipi di dati di base nel Sottoscrittore. Questa opzione non può essere usata quando è presente un vincolo CHECK o DEFAULT su una colonna UDT, se una colonna UDT è inclusa nella chiave primaria o se una colonna calcolata fa riferimento a una colonna UDT. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x40

    Genera indici non cluster corrispondenti. Anche se questa opzione non viene impostata, se sono già definiti in una tabella pubblicata, gli indici correlati alle chiavi primarie e i vincoli UNIQUE vengono generati.

    0x80

    Replica i vincoli PRIMARY KEY. Vengono inoltre replicati tutti gli indici correlati al vincolo, anche se le opzioni 0x10 e 0x40 non sono abilitate.

    0x100

    Replica i trigger utente su un articolo di tabella, se definiti. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x200

    Replica i vincoli FOREIGN KEY. Se la tabella con riferimenti non fa parte di una pubblicazione, tutti i vincoli FOREIGN KEY su una tabella pubblicata non vengono replicati. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x400

    Replica i vincoli CHECK. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x800

    Replica i valori predefiniti. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x1000

    Replica le regole di confronto a livello di colonna.

    [!NOTA]

    È consigliabile impostare questa opzione per i server di pubblicazione Oracle per supportare i confronti con distinzione tra maiuscole e minuscole.

    0x2000

    Replica le proprietà estese associate all'oggetto di origine dell'articolo pubblicato. Questo parametro non è supportato per server di pubblicazione Oracle.

    0x4000

    Replica i vincoli UNIQUE. Vengono inoltre replicati tutti gli indici correlati al vincolo, anche se le opzioni 0x10 e 0x40 non sono abilitate.

    0x8000

    Questa opzione non è valida per i server di pubblicazione SQL Server 2005.

    0x10000

    Replica i vincoli CHECK come NOT FOR REPLICATION in modo che i vincoli non vengono imposti durante la sincronizzazione.

    0x20000

    Replica i vincoli FOREIGN KEY come NOT FOR REPLICATION in modo che i vincoli non vengono imposti durante la sincronizzazione.

    0x40000

    Replica i filegroup associati a una tabella o un indice partizionato.

    0x80000

    Replica lo schema di partizione per una tabella partizionata.

    0x100000

    Replica lo schema di partizione per un indice partizionato.

    0x200000

    Replica le statistiche della tabella.

    0x400000

    Associazioni predefinite

    0x800000

    Associazioni regola

    0x1000000

    Indice full-text

    0x2000000

    Le raccolte di XML Schema associati a colonne xml non vengono replicati.

    0x4000000

    Replica gli indici su colonne xml.

    0x8000000

    Crea gli schemi non ancora presenti nel Sottoscrittore.

    0x10000000

    Converte le colonne xml in ntext nel Sottoscrittore.

    0x20000000

    Converte i tipi di dati LOB (Large Object) (nvarchar(max), varchar(max) e varbinary(max)) introdotti in SQL Server 2005 in tipi di dati supportati in SQL Server 2000.

    0x40000000

    Replica le autorizzazioni.

    0x80000000

    Tenta di eliminare le dipendenze da tutti gli oggetti che non fanno parte della pubblicazione.

    0x100000000

    Usare questa opzione per replicare l'attributo FILESTREAM se è specificato nelle colonne varbinary(max). Non specificare questa opzione se si stanno replicando tabelle nei Sottoscrittori SQL Server 2005. La replica di tabelle con colonne FILESTREAM nei Sottoscrittori SQL Server 2000 non è supportata, indipendentemente dall'impostazione di questa opzione dello schema.

    Vedere l'opzione correlata 0x800000000.

    0x200000000

    Converte i tipi di dati data/ora (date, time, datetimeoffset e datetime2) introdotti in SQL Server 2008 in tipi di dati supportati nelle versioni precedenti di SQL Server.

    0x400000000

    Replica l'opzione di compressione per dati e indici. Per altre informazioni, vedere Compressione dei dati.

    0x800000000

    Impostare questa opzione per archiviare i dati FILESTREAM nel relativo filegroup nel Sottoscrittore. Se questa opzione non è impostata, i dati FILESTREAM vengono archiviati nel filegroup predefinito. Tramite la replica non vengono creati filegroup, pertanto, se si imposta questa opzione, è necessario creare il filegroup prima di applicare lo snapshot nel Sottoscrittore. Per altre informazioni su come creare gli oggetti prima di applicare lo snapshot, vedere Eseguire gli script prima e dopo l'applicazione dello snapshot.

    Vedere l'opzione correlata 0x100000000.

    0x1000000000

    Converte i tipi CLR definiti dall'utente con dimensioni maggiori di 8000 byte in varbinary(max) così che le colonne con tipo definito dall'utente possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005.

    0x2000000000

    Converte il tipo di dati hierarchyid in varbinary(max) in modo che le colonne di tipo hierarchyid possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005. Per altre informazioni su come usare le colonne hierarchyid nelle tabelle replicate, vedere hierarchyid (Transact-SQL).

    0x4000000000

    Replica gli eventuali indici filtrati sulla tabella. Per altre informazioni sugli indici filtrati, vedere Creare indici filtrati.

    0x8000000000

    Converte i tipi di dati geography e geometry in varbinary(max) in modo che le colonne di questi tipi possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005.

    0x10000000000

    Replica gli indici nelle colonne di tipo geography e geometry.

    0x20000000000

    Replica l'attributo SPARSE per le colonne. Per altre informazioni su questo attributo, vedere Utilizzo di colonne di tipo sparse.

    NULL

    La replica imposta automaticamente il parametro schema_option su un valore predefinito dipendente da altre proprietà dell'articolo. Nella tabella "Opzioni predefinite dello schema" riportata nella sezione Osservazioni vengono descritte le opzioni predefinite dello schema in base a tipo di articolo e tipo di replica.

    Il valore predefinito per le pubblicazioni non SQL Server è 0x050D3.

    Non tutti i valori schema_option risultano validi per i vari tipi di replica e di articolo. Nella tabella Opzioni di schema valide riportata nella sezione Osservazioni vengono descritte le opzioni di schema valide utilizzabili in base alla combinazione di tipo di articolo e tipo di replica.

  • [ @destination_owner =] 'destination_owner'
    Nome del proprietario dell'oggetto di destinazione. Il parametro destination_owner è di tipo sysname e il valore predefinito è NULL. Se non si specifica destination_owner, il proprietario viene impostato automaticamente in base alle regole seguenti:

    Condizione

    Proprietario dell'oggetto di destinazione

    La pubblicazione utilizza la copia bulk in modalità nativa per generare lo snapshot iniziale, che supporta solo Sottoscrittori SQL Server.

    Corrispondente per impostazione predefinita al valore di source_owner.

    Pubblicazione da un server di pubblicazione non SQL Server.

    Corrispondente per impostazione predefinita al proprietario del database di destinazione.

    La pubblicazione utilizza la copia bulk in modalità carattere per generare lo snapshot iniziale, che supporta Sottoscrittori non SQL Server.

    Non assegnato.

    Per supportare Sottoscrittori non SQL Server è necessario che destination_owner sia NULL.

  • [ @status=] status
    Specifica se l'articolo è attivo e offre ulteriori opzioni per la propagazione delle modifiche. status è di tipo tinyint e può essere il prodotto | (OR bit per bit) di uno o più dei valori seguenti:

    Valore

    Descrizione

    1

    L'articolo è attivo.

    8

    Include il nome della colonna nelle istruzioni INSERT.

    16 (predefinito)

    Utilizza istruzioni con parametri.

    24

    Include il nome della colonna nelle istruzioni INSERT e utilizza istruzioni con parametri.

    64

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

    Ad esempio, per un articolo attivo che utilizza istruzioni con parametri il valore in questa colonna sarebbe 17. Il valore 0 indica che l'articolo non è attivo e che non sono definite proprietà aggiuntive.

  • [ @source_owner =] 'source_owner'
    Proprietario dell'oggetto di origine. Il parametro source_owner è di tipo sysname e il valore predefinito è NULL. Il parametro source_owner è obbligatorio per i server di pubblicazione Oracle.

  • [ @sync_object_owner =] 'sync_object_owner'
    Proprietario della vista che definisce l'articolo pubblicato. Il parametro sync_object_owner è di tipo sysname e il valore predefinito è NULL.

  • [ @filter_owner =] 'filter_owner'
    Proprietario del filtro. Il parametro filter_owner è di tipo sysname e il valore predefinito è NULL.

  • [ @source_object=] 'source_object'
    Oggetto di database da pubblicare. Il parametro source_object è di tipo sysname e il valore predefinito è NULL. Se source_table è NULL, source_object non può essere NULL. È necessario usaresource_object anziché source_table. Per altre informazioni sui tipi di oggetti che è possibile pubblicare con la replica snapshot o transazionale, vedere Pubblicazione di dati e oggetti di database.

  • [ @artid = ] article_ID OUTPUT
    ID del nuovo articolo. article_ID è di tipo int e il valore predefinito è NULL. Si tratta di un parametro OUTPUT.

  • [ @auto_identity_range = ] 'auto_identity_range'
    Abilita e disabilita la gestione automatica degli intervalli di valori Identity in una pubblicazione al momento della creazione. auto_identity_range è di tipo nvarchar(5). I valori possibili sono i seguenti:

    Valore

    Descrizione

    true

    Abilita la gestione automatica degli intervalli di valori Identity.

    false

    Viene disabilitata la gestione automatica degli intervalli di valori Identity.

    NULL (predefinito)

    La gestione degli intervalli di valori Identity viene impostata tramite identityrangemanagementoption.

    [!NOTA]

    Il parametro auto_identity_range è deprecato e viene fornito solo per compatibilità con le versioni precedenti. Per l'impostazione delle opzioni di gestione degli intervalli di valori Identity, è necessario usare identityrangemanagementoption. Per altre informazioni, vedere Replica di colonne Identity.

  • [ @pub_identity_range = ] pub_identity_range
    Controlla le dimensioni dell'intervallo nel server di pubblicazione se il parametro identityrangemanagementoption dell'articolo è impostato su auto oppure se il parametro auto_identity_range è impostato su true. Il parametro pub_identity_range è di tipo bigint e il valore predefinito è NULL. Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @identity_range = ] identity_range
    Controlla le dimensioni dell'intervallo nel Sottoscrittore se il parametro identityrangemanagementoption dell'articolo è impostato su auto oppure se il parametro auto_identity_range è impostato su true. Il parametro identity_range è di tipo bigint e il valore predefinito è NULL. Viene usato quando auto_identity_range è impostato su true. Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @threshold = ] threshold
    Valore percentuale che determina quando l'agente di distribuzione assegna un nuovo intervallo di valori Identity. Quando si utilizza la percentuale di valori specificata in threshold, l'agente di distribuzione crea un nuovo intervallo di valori Identity. Il parametro threshold è di tipo bigint e il valore predefinito è NULL. Parametro usato quando identityrangemanagementoption è impostato su auto o auto_identity_range è impostato su true. Questo parametro non è supportato per server di pubblicazione Oracle.

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

    0 indica che l'aggiunta di un articolo non invalida 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 indica che l'aggiunta di un articolo potrebbe invalidare lo snapshot. Se sono disponibili sottoscrizioni che richiedono un nuovo snapshot, consente di contrassegnare lo snapshot esistente come obsoleto e di generarne uno nuovo.

  • [ @use_default_datatypes = ] use_default_datatypes
    Indica se vengono usati i mapping predefiniti dei tipi di dati delle colonne quando si pubblica un articolo da un server di pubblicazione Oracle. use_default_datatypes è di tipo bit e il valore predefinito è 1.

    1 = vengono usati i mapping predefiniti delle colonne dell'articolo. Per visualizzare i mapping dei tipi di dati predefiniti, è possibile eseguire sp_getdefaultdatatypemapping.

    0 = vengono definiti mapping personalizzati per le colonne dell'articolo e pertanto la stored procedure sp_articleview non viene chiamata da sp_addarticle.

    Se use_default_datatypes è impostato su 0, è necessario eseguire sp_changearticlecolumndatatype una volta per ogni mapping di colonna da modificare rispetto all'impostazione predefinita. Dopo aver definito tutti i mapping di colonna personalizzati, è necessario eseguire sp_articleview.

    [!NOTA]

    Questo parametro deve essere usato solo per i server di pubblicazione Oracle. L'impostazione di use_default_datatypes su 0 per un server di pubblicazione SQL Server genera un errore.

  • [ @identityrangemanagementoption = ] identityrangemanagementoption
    Specifica la modalità di gestione degli intervalli di valori Identity per l'articolo. identityrangemanagementoption è di tipo nvarchar(10). I valori possibili sono i seguenti.

    Valore

    Descrizione

    none

    La replica non esegue la gestione degli intervalli dei valori Identity espliciti. Questa opzione è consigliabile solo per compatibilità con versioni precedenti di SQL Server. Non consentito per la replica peer-to-peer.

    manual

    Contrassegna la colonna Identity con NOT FOR REPLICATION per consentire la gestione manuale degli intervalli di valori Identity.

    auto

    Imposta la gestione automatica degli intervalli di valori Identity.

    NULL (predefinito)

    Per impostazione predefinita viene usato il valore none quando il valore di auto_identity_range non è true. Per impostazione predefinita, viene usato il valore manual in una topologia peer-to-peer (il parametro auto_identity_range viene ignorato).

    Per compatibilità con le versioni precedenti, quando il valore di identityrangemanagementoption è NULL, viene controllato il valore di auto_identity_range. Se, tuttavia, il valore di identityrangemanagementoption è diverso da NULL, il valore di auto_identity_range viene ignorato.

    Per altre informazioni, vedere Replica di colonne Identity.

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

    [!NOTA]

    Non usare publisher per l'aggiunta di un articolo a un server di pubblicazione SQL Server.

  • [ @fire_triggers_on_snapshot = ] 'fire_triggers_on_snapshot'
    Indica se i trigger utente replicati vengono eseguiti quando viene applicato lo snapshot iniziale. Il parametro fire_triggers_on_snapshot è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true indica che i trigger utente su una tabella replicata vengono eseguiti all'applicazione dello snapshot. Per consentire la replica dei trigger, è necessario che la maschera di bit del parametro schema_option includa il valore 0x100.

Valori di codice restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

La stored procedure sp_addarticle viene usata per la replica snapshot o transazionale.

Per impostazione predefinita, vengono escluse dalla pubblicazione le colonne della tabella di origine con tipo di dati non supportato dalla replica. Se è necessario pubblicare colonne con queste caratteristiche, è necessario eseguire sp_articlecolumn per aggiungere queste colonne.

Per l'aggiunta di un articolo a una pubblicazione che supporta la replica transazionale peer-to-peer sono valide le restrizioni seguenti:

  • È necessario specificare istruzioni con parametri per tutti gli articoli basati su log. È necessario includere il valore 16 nel parametro status.

  • Il nome e il proprietario della tabella di destinazione devono corrispondere a quelli della tabella di origine.

  • Non è possibile filtrare l'articolo in modo orizzontale o verticale.

  • La gestione automatica degli intervalli di valori Identity non è supportata. È necessario specificare il valore manual per identityrangemanagementoption.

  • Se la tabella include una colonna timestamp, è necessario specificare il valore 0x08 per il parametro schema_option per replicare la colonna come timestamp.

  • Non è consentita l'impostazione del valore SQL per ins_cmd, upd_cmd e del_cmd.

Per altre informazioni, vedere Replica transazionale peer-to-peer.

Quando si pubblicano gli oggetti, nei Sottoscrittori vengono copiate le relative definizioni. Per la pubblicazione di un oggetto di database che dipende da altri oggetti, è necessario pubblicare tutti gli oggetti a cui fa riferimento. Se si pubblica una vista che dipende da una tabella, ad esempio, è necessario pubblicare anche la tabella.

Se vertical_partition è impostato su true, sp_addarticle posticipa la creazione della vista fino alla chiamata della stored procedure sp_articleview, ovvero dopo l'aggiunta dell'ultima colonna sp_articlecolumn.

Se la pubblicazione consente l'aggiornamento delle sottoscrizioni e nella tabella pubblicata non è inclusa una colonna uniqueidentifier, tramite sp_addarticle viene automaticamente aggiunta una colonna uniqueidentifier alla tabella.

In caso di replica a un Sottoscrittore che non è un'istanza di SQL Server (replica eterogenea), solo le istruzioni Transact-SQL sono supportate per i comandi INSERT, UPDATE e DELETE.

Quando l'agente di lettura log è in esecuzione, l'aggiunta di un articolo a una pubblicazione peer-to-peer può causare un deadlock tra l'agente di lettura log e il processo tramite cui viene aggiunto l'articolo. Per evitare questo problema, prima di aggiungere un articolo a una pubblicazione peer-to-peer usare Monitoraggio replica per arrestare l'agente di lettura log sul nodo in cui si aggiunge l'articolo. Riavviare l'agente di lettura log dopo aver aggiunto l'articolo.

L'impostazione di @del\_cmd = 'NONE' o @ins\_cmd = 'NONE' può influire sulla propagazione dei comandi UPDATE con il mancato invio di tali comandi quando ha luogo un aggiornamento associato. Per aggiornamento associato si intende un tipo di istruzione UPDATE dal server di pubblicazione che replica come coppia DELETE/INSERT nel sottoscrittore.

Opzioni predefinite dello schema

In questa tabella si descrive il valore predefinito impostato dalla replica se il parametro schema_options non viene specificato dall'utente, nel caso in cui questo valore dipenda dal tipo di replica (indicato nella parte superiore) e dal tipo di articolo (indicato nella parte inferiore della prima colonna).

Tipo di articolo

Tipo di replica

 

 

Transazionale

Snapshot

aggregate schema only

0x01

0x01

func schema only

0x01

0x01

indexed view schema only

0x01

0x01

indexed view logbased

0x30F3

0x3071

indexed view logbase manualboth

0x30F3

0x3071

indexed view logbased manualfilter

0x30F3

0x3071

indexed view logbased manualview

0x30F3

0x3071

logbased

0x30F3

0x3071

logbased manualfilter

0x30F3

0x3071

logbased manualview

0x30F3

0x3071

proc exec

0x01

0x01

proc schema only

0x01

0x01

serializable proc exec

0x01

0x01

view schema only

0x01

0x01

[!NOTA]

Se una pubblicazione è abilitata per l'aggiornamento in coda, al valore predefinito indicato nella tabella viene aggiunto il valore schema_option 0x80. Il valore predefinito di schema_option per una pubblicazione non SQL Server è 0x050D3.

Opzioni di schema valide

In questa tabella vengono indicati i valori consentiti di schema_option in base al tipo di replica (indicato nella prima riga) e al tipo di articolo (indicato nella prima colonna).

Tipo di articolo

Tipo di replica

 

 

Transazionale

Snapshot

logbased

Tutte le opzioni

Tutte le opzioni tranne 0x02

logbased manualfilter

Tutte le opzioni

Tutte le opzioni tranne 0x02

logbased manualview

Tutte le opzioni

Tutte le opzioni tranne 0x02

indexed view logbased

Tutte le opzioni

Tutte le opzioni tranne 0x02

indexed view logbased manualfilter

Tutte le opzioni

Tutte le opzioni tranne 0x02

indexed view logbased manualview

Tutte le opzioni

Tutte le opzioni tranne 0x02

indexed view logbase manualboth

Tutte le opzioni

Tutte le opzioni tranne 0x02

proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

serializable proc exec

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

proc schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

func schema only

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000

indexed view schema only

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

0x01, 0x010, 0x020, 0x040, 0x0100, 0x2000, 0x40000, 0x100000, 0x200000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x40000000 e 0x80000000

[!NOTA]

Per le pubblicazioni ad aggiornamento in coda, i valori di schema_option 0x8000 e 0x80 devono essere abilitati. Di seguito sono riportati i valori schema_option supportati per pubblicazioni non SQL Server: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 e 0X8000.

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_addarticle.

Vedere anche

Riferimento

sp_articlecolumn (Transact-SQL)

sp_articlefilter (Transact-SQL)

sp_articleview (Transact-SQL)

sp_changearticle (Transact-SQL)

sp_droparticle (Transact-SQL)

sp_helparticle (Transact-SQL)

sp_helparticlecolumns (Transact-SQL)

Stored procedure per la replica (Transact-SQL)

Concetti

Definizione di un articolo

Pubblicazione di dati e oggetti di database