sp_addarticle (Transact-SQL)
Data aggiornamento: 14 aprile 2006
Crea un articolo e lo aggiunge a una pubblicazione. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
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 che contiene 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 è obsoleto ed è supportato per compatibilità con gli script di versioni precedenti. Utilizzare source_object in alternativa. Questo parametro non è supportato per i server di pubblicazione Oracle.
- [ @destination_table = ] 'destination_table'
Nome della tabella (di sottoscrizione) di destinazione, se diversa da source_table o 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'
Attiva e disattiva l'applicazione di filtri alle colonne in un articolo di tabella. 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 supportano 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 possibili valori 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. Valore non supportato per i 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. Valore non supportato per i 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. Valore non supportato per i 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. Valore non supportato per i 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 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. Valore non supportato per i 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. Valore non supportato per i server di pubblicazione Oracle.
logbased manualview
Articolo basato su log con vista manuale. Per questa opzione è necessario specificare il parametro sync_object. Valore non supportato per i server di pubblicazione Oracle.
proc exec
Replica l'esecuzione della stored procedure in tutti i Sottoscrittori dell'articolo. Valore non supportato per i server di pubblicazione Oracle.
proc schema only
Procedura con solo schema. Valore non supportato per i server di pubblicazione Oracle.
serializable proc exec
Replica l'esecuzione della stored procedure solo se viene eseguita nel contesto di una transazione serializzabile. Valore non supportato per i server di pubblicazione Oracle.
view schema only
Vista con solo schema. Valore non supportato per i 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 utilizzata per filtrare la tabella in modo orizzontale. filter è di tipo nvarchar(386) e il valore predefinito è NULL. sp_articleview e 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 utilizzata per la creazione del file di dati che rappresenta lo snapshot per l'articolo. 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 utilizzata 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 utilizzato per replicare le operazioni di inserimento per l'articolo. ins_cmd è di tipo nvarchar(255). I possibili valori sono i seguenti.Valore Descrizione NONE
Non viene eseguita alcuna azione.
CALL sp_MSins_table (predefinito)
-oppure-
CALL custom_stored_procedure_name
Chiama una stored procedure per l'esecuzione nel Sottoscrittore. Per adottare questo metodo di replica, utilizzare 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 ulteriori informazioni, vedere Impostazione della modalità di propagazione delle modifiche per gli articoli transazionali.
[ @del_cmd =] 'del_cmd'
Tipo di comando di replica utilizzato per replicare le operazioni di eliminazione per l'articolo. del_cmd è di tipo nvarchar(255). I possibili valori sono i seguenti.Valore Descrizione NONE
Non viene eseguita alcuna azione.
CALLsp_MSdel_table (predefinito)
-oppure-
CALL custom_stored_procedure_name
Chiama una stored procedure per l'esecuzione nel Sottoscrittore. Per adottare questo metodo di replica, utilizzare 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, utilizzare 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 ulteriori informazioni, vedere Impostazione della modalità di propagazione delle modifiche per gli articoli transazionali.
[ @upd_cmd =] 'upd_cmd'
Tipo di comando di replica utilizzato per replicare le operazioni di aggiornamento per l'articolo. upd_cmd è di tipo nvarchar(255). I possibili valori 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, utilizzare 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, utilizzare 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 (predefinito)
-oppure-
SCALL custom_stored_procedure_name
Chiama una stored procedure che accetta i parametri di stile SCALL. Per adottare questo metodo di replica, utilizzare 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, utilizzare 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 ulteriori 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 utilizzato per creare l'articolo nel database di sottoscrizione. creation_script è di tipo nvarchar(255) e il valore predefinito è NULL.
- [ @description =] 'description'
Voce descrittiva per l'articolo. 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 possibili valori sono i seguenti.Valore Descrizione none
Non utilizza alcun comando.
delete
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. filter_clause è di tipo ntext e il valore predefinito è NULL. Per ulteriori informazioni, vedere Applicazione di filtri ai 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ù valori tra i 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
[ @destination_owner =] 'destination_owner'
Nome del proprietario dell'oggetto di destinazione. 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 di massa 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 di massa 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ù valori tra i seguenti.Valore
- [ @source_owner =] 'source_owner'
Proprietario dell'oggetto di origine. 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. sync_object_owner è di tipo sysname e il valore predefinito è NULL.
- [ @filter_owner =] 'filter_owner'
Proprietario del filtro. filter_owner è di tipo sysname e il valore predefinito è NULL.
- [ @source_object =] 'source_object'
Oggetto di database da pubblicare. source_object è di tipo sysname e il valore predefinito è NULL. Se source_table è NULL, source_object non può essere NULL. È necessario utilizzaresource_object anziché source_table. Per ulteriori 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'
Attiva e disattiva la gestione automatica degli intervalli di valori Identity in una pubblicazione al momento della creazione. auto_identity_range è di tipo nvarchar(5). I possibili valori sono i seguenti:Valore Descrizione true
Attiva la gestione automatica degli intervalli di valori Identity.
false
Disattiva 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 è obsoleto ed è disponibile solo per compatibilità con le versioni precedenti. Per l'impostazione delle opzioni di gestione degli intervalli di valori Identity, è necessario utilizzare identityrangemanagementoption. Per ulteriori 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. pub_identity_range è di tipo bigint e il valore predefinito è NULL. Valore non supportato per i 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. identity_range è di tipo bigint e il valore predefinito è NULL. Viene utilizzato quando auto_identity_range è impostato su true. Valore non supportato per i server di pubblicazione Oracle.
- [ @threshold = ] threshold
Valore percentuale che determina quando l'agente di distribuzione assegna un nuovo intervallo di valori Identity. L'agente di distribuzione crea un nuovo intervallo di valori Identity quando viene utilizzata la percentuale di valori specificata in threshold. threshold è di tipo bigint e il valore predefinito è NULL. Parametro utilizzato quando identityrangemanagementoption è impostato su auto o auto_identity_range è impostato su true. Valore non supportato per i 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 utilizzati 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 utilizzati 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 utilizzato 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 possibili valori 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 utilizzato il valore none quando il valore di auto_identity_range non è true. Per impostazione predefinita, viene utilizzato 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. Tuttavia, se il valore di identityrangemanagementoption è diverso da NULL, il valore di auto_identity_range viene ignorato.**
Per ulteriori informazioni, vedere Replica di colonne Identity.
[ @publisher = ] 'publisher'
Specifica un server di pubblicazione non SQL Server. publisher è di tipo sysname e il valore predefinito è NULL.[!NOTA] Non utilizzare 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 si applica lo snapshot iniziale. 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.
Osservazioni
La stored procedure sp_addarticle viene utilizzata 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 tali colonne. Per ulteriori informazioni, vedere Considerazioni su tutti i tipi di replica.
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 ulteriori 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 le sottoscrizioni aggiornabili e la tabella pubblicata non include una colonna di tipo uniqueidentifier, sp_addarticle aggiunge automaticamente una colonna uniqueidentifier alla tabella.
Per gli articoli che supportano sottoscrizioni trasformabili, i valori specificati per ins_cmd, del_cmde upd_cmd vengono ignorati.
Opzioni predefinite dello schema
In questa tabella vengono indicati i valori predefiniti impostati dalla funzionalità di replica se non si specifica il parametro schema_options, nei casi in cui il valore dipende dal tipo di replica (indicato nella prima riga) e dal tipo di articolo (indicato nella 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 |
serialized 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_option0x80. 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 |
serialized 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_option0x8000 e 0x80 devono essere attivati. I valori di schema_option supportati per le pubblicazioni non SQL Server sono: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000, 0x4000 e 0X8000.
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_addarticle.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
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
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)
Altre risorse
How to: Define an Article (Replication Transact-SQL Programming)
Pubblicazione di dati e oggetti di database
Guida in linea e informazioni
Cronologia modifiche
Versione | Cronologia |
---|---|
14 aprile 2006 |
|
5 dicembre 2005 |
|