sp_addarticle (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Viene creato un articolo che viene aggiunto a una pubblicazione. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_addarticle
[ @publication = ] N'publication'
, [ @article = ] N'article'
[ , [ @source_table = ] N'source_table' ]
[ , [ @destination_table = ] N'destination_table' ]
[ , [ @vertical_partition = ] N'vertical_partition' ]
[ , [ @type = ] N'type' ]
[ , [ @filter = ] N'filter' ]
[ , [ @sync_object = ] N'sync_object' ]
[ , [ @ins_cmd = ] N'ins_cmd' ]
[ , [ @del_cmd = ] N'del_cmd' ]
[ , [ @upd_cmd = ] N'upd_cmd' ]
[ , [ @creation_script = ] N'creation_script' ]
[ , [ @description = ] N'description' ]
[ , [ @pre_creation_cmd = ] N'pre_creation_cmd' ]
[ , [ @filter_clause = ] N'filter_clause' ]
[ , [ @schema_option = ] schema_option ]
[ , [ @destination_owner = ] N'destination_owner' ]
[ , [ @status = ] status ]
[ , [ @source_owner = ] N'source_owner' ]
[ , [ @sync_object_owner = ] N'sync_object_owner' ]
[ , [ @filter_owner = ] N'filter_owner' ]
[ , [ @source_object = ] N'source_object' ]
[ , [ @artid = ] artid OUTPUT ]
[ , [ @auto_identity_range = ] N'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 = ] N'identityrangemanagementoption' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot' ]
[ ; ]
Argomenti
[ @publication = ] N'publication'
Nome della pubblicazione contenente l'articolo. Deve essere un nome univoco all'interno del database. @publication è sysname, senza impostazione predefinita.
[ @article = ] N'article'
Nome dell'articolo. Deve essere un nome univoco all'interno della pubblicazione. @article è sysname, senza impostazione predefinita.
[ @source_table = ] N'source_table'
Questo parametro è stato deprecato; usare invece @source_object . @source_table è nvarchar(386), con un valore predefinito .NULL
@source_table non è supportato per i server di pubblicazione Oracle.
[ @destination_table = ] N'destination_table'
Nome della tabella di destinazione (sottoscrizione), se diversa da @source_table o dalla stored procedure. @destination_table è sysname, con il valore predefinito NULL
. Se impostato su NULL
, significa che @source_table è uguale a @destination_table.
[ @vertical_partition = ] N'vertical_partition'
Abilita e disabilita l'applicazione di filtri alle colonne in un articolo di tabella. @vertical_partition è nchar(5), con il valore predefinito false
.
false
indica che non è presente alcun filtro verticale e pubblica tutte le colonne.true
cancella tutte le colonne, ad eccezione della chiave primaria dichiarata, delle colonne nullable senza colonne chiave predefinite e univoche. Le colonne vengono aggiunte tramite sp_articlecolumn.
[ @type = ] N'type'
Tipo di articolo. @type è sysname, con un valore predefinito , NULL
e può essere uno dei valori 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. Questa proprietà non è supportata per server di pubblicazione Oracle. Per questo tipo di articolo, la tabella di base non deve essere pubblicata separatamente. |
indexed view logbased manualboth |
Articolo di vista indicizzata basato su log con filtro manuale e vista manuale. Per questa opzione è necessario specificare sia i parametri @sync_object che @filter . Per questo tipo di articolo, la tabella di base non deve essere pubblicata separatamente. Questa proprietà non è supportata per server di pubblicazione Oracle. |
indexed view logbased manualfilter |
Articolo di vista indicizzata basato su log con filtro manuale. Per questa opzione è necessario specificare sia i parametri @sync_object che @filter . Per questo tipo di articolo, la tabella di base non deve essere pubblicata separatamente. Questa proprietà non è supportata 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, la tabella di base non deve essere pubblicata separatamente. Questa proprietà non è supportata 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 sia i parametri @sync_object che @filter . Questa proprietà non è supportata per server di pubblicazione Oracle. |
logbased manualfilter |
Articolo basato su log con filtro manuale. Per questa opzione è necessario specificare sia i parametri @sync_object che @filter . Questa proprietà non è supportata per server di pubblicazione Oracle. |
logbased manualview |
Articolo basato su log con vista manuale. Per questa opzione è necessario specificare il parametro @sync_object . Questa proprietà non è supportata per server di pubblicazione Oracle. |
proc exec |
Replica l'esecuzione della stored procedure in tutti i Sottoscrittori dell'articolo. Questa proprietà non è supportata per server di pubblicazione Oracle. È consigliabile usare l'opzione serializable proc exec anziché proc exec. Per altre informazioni, vedere la sezione "Tipi di esecuzione di stored procedure" in Pubblicazione dell'esecuzione di stored procedure nella replica transazionale. Non disponibile se l'acquisizione dati delle modifiche è abilitata. |
proc schema only |
Procedura con solo schema. Questa proprietà non è supportata per server di pubblicazione Oracle. |
serializable proc exec |
Replica l'esecuzione della stored procedure solo se viene eseguita nel contesto di una transazione serializzabile. Questa proprietà non è supportata per server di pubblicazione Oracle. La procedura deve essere eseguita anche all'interno di una transazione esplicita per la replica dell'esecuzione della routine. |
view schema only |
Vista con solo schema. Questa proprietà non è supportata per server di pubblicazione Oracle. Se si usa questa opzione, è necessario pubblicare anche la tabella di base. |
[ @filter = ] N'filter'
Stored procedure (creata con FOR REPLICATION) utilizzata per filtrare la tabella orizzontalmente. @filter è nvarchar(386), con il valore predefinito NULL
. È necessario eseguire sp_articleview e sp_articlefilter manualmente per creare la vista e filtrare la stored procedure. Se non NULL
è , la routine di filtro non viene creata (presuppone che la stored procedure venga creata manualmente).
[ @sync_object = ] N'sync_object'
Nome della tabella o della vista utilizzata per produrre il file di dati utilizzato per rappresentare lo snapshot per questo articolo. @sync_object è nvarchar(386), con il valore predefinito NULL
. Se NULL
, sp_articleview viene chiamato per creare automaticamente la vista usata per generare il file di output. Ciò si verifica dopo l'aggiunta di colonne con sp_articlecolumn. Se non NULL
è , non viene creata una vista (si presuppone che la visualizzazione venga creata manualmente).
[ @ins_cmd = ] N'ins_cmd'
Tipo di comando di replica utilizzato durante la replica degli inserimenti per questo articolo. @ins_cmd è nvarchar(255)e può essere uno dei valori 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 utilizzare 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 al posto del _table parte del parametro . Quando si specifica @destination_owner , viene anteporta al nome della tabella di destinazione. Ad esempio, per la ProductCategory tabella di proprietà dello Production schema nel Sottoscrittore, il parametro sarà CALL sp_MSins_ProductionProductCategory . Per un articolo in una topologia di replica peer-to-peer, <table> viene aggiunto un valore GUID. La specifica non <custom_stored_procedure> è supportata per gli abbonati ad aggiornamento. |
SQL oppure NULL |
Replica un'istruzione INSERT . L'istruzione INSERT fornisce 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 Articoli transazionali - Specificare la modalità di propagazione delle modifiche.
[ @del_cmd = ] N'del_cmd'
Tipo di comando di replica usato per la replica delle eliminazioni per questo articolo. @del_cmd è nvarchar(255)e può essere uno dei valori 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 utilizzare 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 al posto del _table parte del parametro . Quando si specifica @destination_owner , viene anteporta al nome della tabella di destinazione. Ad esempio, per la ProductCategory tabella di proprietà dello Production schema nel Sottoscrittore, il parametro sarà CALL sp_MSdel_ProductionProductCategory . Per un articolo in una topologia di replica peer-to-peer, <table> viene aggiunto un valore GUID. La specifica non <custom_stored_procedure> è supportata per gli abbonati ad aggiornamento. |
XCALL sp_MSdel_<table> oppure XCALL <custom_stored_procedure_name> |
Chiama una stored procedure che accetta XCALL parametri di stile. Per utilizzare 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. La specifica di una stored procedure creata dall'utente non è consentita per gli abbonati ad aggiornamento. |
SQL oppure NULL |
Replica un'istruzione DELETE . L'istruzione DELETE viene fornita a tutti i valori della colonna 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 Articoli transazionali - Specificare la modalità di propagazione delle modifiche.
[ @upd_cmd = ] N'upd_cmd'
Tipo di comando di replica usato durante la replica degli aggiornamenti per questo articolo. @upd_cmd è nvarchar(255)e può essere uno dei valori 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 utilizzare 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 MCALL parametri di stile. Per utilizzare 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 al posto della <table> parte del parametro . Quando si specifica @destination_owner , viene anteporta al nome della tabella di destinazione. Ad esempio, per la ProductCategory tabella di proprietà dello Production schema nel Sottoscrittore, il parametro sarà MCALL sp_MSupd_ProductionProductCategory . Per un articolo in una topologia di replica peer-to-peer, <table> viene aggiunto un valore GUID. La specifica di una stored procedure creata dall'utente non è consentita per gli abbonati ad aggiornamento. |
SCALL sp_MSupd_<table> (predefinito)oppure SCALL <custom_stored_procedure_name> |
Chiama una stored procedure che accetta SCALL parametri di stile. Per utilizzare 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 al posto del _table parte del parametro . Quando si specifica @destination_owner , viene anteporta al nome della tabella di destinazione. Ad esempio, per la ProductCategory tabella di proprietà dello Production schema nel Sottoscrittore, il parametro sarà SCALL sp_MSupd_ProductionProductCategory . Per un articolo in una topologia di replica peer-to-peer, _table viene aggiunto con un valore GUID. La specifica di una stored procedure creata dall'utente non è consentita per gli abbonati ad aggiornamento. |
XCALL sp_MSupd_<table> oppure XCALL <custom_stored_procedure_name> |
Chiama una stored procedure che accetta XCALL parametri di stile. Per utilizzare 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. La specifica di una stored procedure creata dall'utente non è consentita per gli abbonati ad aggiornamento. |
SQL oppure NULL |
Replica un'istruzione UPDATE . L'istruzione UPDATE viene fornita su tutti i valori di colonna e sui valori della colonna 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
La sintassi per CALL
, MCALL
, SCALL
e XCALL
varia la quantità di dati propagati al sottoscrittore. La CALL
sintassi passa tutti i valori per tutte le colonne inserite ed eliminate. La SCALL
sintassi passa valori solo per le colonne interessate. La XCALL
sintassi passa valori per tutte le colonne, modificate o meno, incluso il valore precedente della colonna. Per altre informazioni, vedere Articoli transazionali - Specificare la modalità di propagazione delle modifiche.
[ @creation_script = ] N'creation_script'
Percorso e nome di uno script dello schema di articolo facoltativo usato per creare l'articolo nel database di sottoscrizione. @creation_script è nvarchar(255), con un valore predefinito .NULL
[ @description = ] N'description'
Voce descrittiva per l'articolo. @description è nvarchar(255), con il valore predefinito NULL
.
[ @pre_creation_cmd = ] N'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 è nvarchar(10)e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
none |
Non usa un 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. Non è valido per i Sottoscrittori ODBC o OLE DB. |
[ @filter_clause = ] N'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 è nvarchar(max), con il valore predefinito NULL
. Per altre informazioni, vedere Filtrare i dati pubblicati.
[ @schema_option = ] schema_option
Maschera di bit dell'opzione di generazione dello schema per l'articolo specificato. @schema_option è varbinary(8), con un valore predefinito e NULL
può essere | (OR bit per bit) prodotto di uno o più di questi valori:
Nota
Se questo valore è NULL
, il sistema genera automaticamente un'opzione di schema valida per l'articolo a seconda di altre proprietà dell'articolo. Le opzioni dello schema predefinito mostrano il valore che verrà scelto in base alla combinazione del tipo di articolo e del tipo di replica.
valore | Descrizione |
---|---|
0x00 |
Disabilita la creazione di script dal agente di snapshot e usa @creation_script. |
0x01 |
Genera lo script per la creazione di oggetti (CREATE TABLE, CREATE PROCEDURE e così via). Corrisponde al 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 |
Replicare le colonne timestamp . Se non impostato, le colonne timestamp vengono replicate come binarie. |
0x10 |
Genera un indice cluster corrispondente. Anche se questa opzione non è impostata, gli indici correlati alle chiavi primarie e ai vincoli univoci vengono generati se sono già definiti in una tabella pubblicata. |
0x20 1 |
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 in una colonna UDT, se una colonna definito dall'utente fa parte della chiave primaria o se una colonna calcolata fa riferimento a una colonna definita dall'utente. |
0x40 |
Genera indici non cluster corrispondenti. Anche se questa opzione non è impostata, gli indici correlati alle chiavi primarie e ai vincoli univoci vengono generati se sono già definiti in una tabella pubblicata. |
0x80 |
Replica i vincoli PRIMARY KEY. Anche gli indici correlati al vincolo vengono replicati, anche se le opzioni 0x10 e 0x40 non sono abilitate. |
0x100 1 |
Replica gli eventuali trigger dell'utente di un articolo di tabella. |
0x200 1 |
Replica i vincoli FOREIGN KEY. Se la tabella a cui si fa riferimento non fa parte di una pubblicazione, tutti i vincoli di chiave esterna in una tabella pubblicata non vengono replicati. |
0x400 1 |
Replica i vincoli CHECK. |
0x800 1 |
Replica i valori predefiniti. |
0x1000 |
Replica le regole di confronto a livello di colonna. Nota: questa opzione deve essere impostata per i server di pubblicazione Oracle per abilitare confronti con distinzione tra maiuscole e minuscole. |
0x2000 1 |
Replica le proprietà estese associate all'oggetto di origine dell'articolo pubblicato. |
0x4000 |
Replica i vincoli UNIQUE. Anche gli indici correlati al vincolo vengono replicati, anche se le opzioni 0x10 e 0x40 non sono abilitate. |
0x8000 |
Questa opzione non è valida per i server di pubblicazione di SQL Server 2005 (9.x). |
0x10000 |
Replica i vincoli CHECK come NOT FOR REPLICATION in modo che i vincoli non vengano applicati durante la sincronizzazione. |
0x20000 |
Replica i vincoli FOREIGN KEY come NOT FOR REPLICATION in modo che i vincoli non vengano applicati 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 di regole. |
0x1000000 |
Indice full-text. |
0x2000000 |
Le raccolte di XML Schema associate alle colonne xml non vengono replicate. |
0x4000000 |
Replica gli indici nelle 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 per oggetti di grandi dimensioni (nvarchar(max), varchar(max)e varbinary(max)) introdotti in SQL Server 2005 (9.x) in tipi di dati supportati in SQL Server 2000 (8.x). |
0x40000000 |
Replica le autorizzazioni. |
0x80000000 |
Tentare di eliminare le dipendenze a 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 esegue la replica delle tabelle nei Sottoscrittori di SQL Server 2005 (9.x). La replica di tabelle con colonne FILESTREAM nei Sottoscrittori di SQL Server 2000 (8.x) non è supportata, indipendentemente dalla modalità di impostazione di questa opzione di schema. Vedere l'opzione correlata 0x800000000. |
0x200000000 |
Converte i tipi di dati di data e ora (data, ora, datetimeoffset e datetime2) introdotti in SQL Server 2008 (10.0.x) in tipi di dati supportati nelle versioni precedenti di SQL Server. |
0x400000000 |
Replica l'opzione di compressione per dati e indici. Per ulteriori informazioni, vedi 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. La replica non crea filegroup; pertanto, se si imposta questa opzione, è necessario creare il filegroup prima di applicare lo snapshot nel Sottoscrittore. Per altre informazioni su come creare oggetti prima di applicare lo snapshot, vedere Eseguire script prima e dopo l'applicazione dello snapshot. Vedere l'opzione correlata 0x100000000. |
0x1000000000 |
Converte i tipi CLR (Common Language Runtime) definiti dall'utente (UDT) superiori a 8000 byte in varbinary(max) in modo che le colonne di tipo UDT possano essere replicate nei Sottoscrittori che eseguono SQL Server 2005 (9.x). |
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 (9.x). Per altre informazioni su come usare le colonne hierarchyid nelle tabelle replicate, vedere hierarchyid. |
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 (9.x). |
0x10000000000 |
Replica gli indici sulle colonne di tipo geography e geometry. |
0x20000000000 |
Replica l'attributo SPARSE per le colonne. Per altre informazioni su questo attributo, vedere Usare colonne di tipo sparse. |
0x40000000000 |
Abilitare lo scripting dall'agente snapshot per creare una tabella ottimizzata per la memoria nel sottoscrittore. |
0x80000000000 |
Converte l'indice cluster in un indice non cluster per articoli ottimizzati per la memoria. |
0x400000000000 |
Replica tutti gli indici columnstore non cluster nelle tabelle |
0x800000000000 |
Replica tutti gli indici columnstore non cluster filtrati nelle tabelle. |
NULL |
La replica imposta automaticamente @schema_option su un valore predefinito, il cui valore dipende 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 DI SQL Server è 0x050D3 . |
1 Non supportato per i server di pubblicazione Oracle.
Non tutti i valori @schema_option sono validi per ogni tipo di replica e tipo di articolo. La tabella Opzioni schema valide nella sezione Osservazioni mostra le opzioni di schema valide che possono essere scelte in base alla combinazione del tipo di articolo e del tipo di replica.
[ @destination_owner = ] N'destination_owner'
Nome del proprietario dell'oggetto di destinazione. @destination_owner è sysname, con un valore predefinito .NULL
Quando @destination_owner non viene specificato, il proprietario viene specificato automaticamente in base alle regole seguenti:
Condizione | Proprietario oggetto di destinazione |
---|---|
La pubblicazione usa la copia bulk in modalità nativa per generare lo snapshot iniziale, che supporta solo i Sottoscrittori di SQL Server. | L'impostazione predefinita è il valore di @source_owner. |
Pubblicato da un server di pubblicazione non SQL Server. | Corrispondente per impostazione predefinita al proprietario del database di destinazione. |
La pubblicazione usa 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, @destination_owner deve essere NULL
.
[ @status = ] status
Specifica se l'articolo è attivo e offre ulteriori opzioni per la propagazione delle modifiche. @status è tinyint e può essere | (OR bit per bit) prodotto di uno o più di questi valori.
valore | Descrizione |
---|---|
1 |
L'articolo è attivo. |
8 |
Include il nome della colonna nelle INSERT istruzioni. |
16 (predefinito) |
Utilizza istruzioni con parametri. |
24 |
Include il nome della colonna nelle INSERT istruzioni e usa istruzioni con parametri. |
64 |
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. |
Ad esempio, un articolo attivo che usa istruzioni con parametri avrà un valore di 17
in questa colonna. Un valore 0
indica che l'articolo è inattivo e non sono definite proprietà aggiuntive.
[ @source_owner = ] N'source_owner'
Proprietario dell'oggetto di origine. @source_owner è sysname, con un valore predefinito .NULL
@source_owner deve essere specificato per i server di pubblicazione Oracle.
[ @sync_object_owner = ] N'sync_object_owner'
Proprietario della visualizzazione che definisce l'articolo pubblicato. @sync_object_owner è sysname, con un valore predefinito .NULL
[ @filter_owner = ] N'filter_owner'
Proprietario del filtro. @filter_owner è sysname, con un valore predefinito .NULL
[ @source_object = ] N'source_object'
Oggetto di database da pubblicare. @source_object è sysname, con un valore predefinito .NULL
Se @source_table è NULL
, @source_object non può essere NULL
. @source_object deve essere usato invece di @source_table. Per altre informazioni sui tipi di oggetti che possono essere pubblicati tramite la replica snapshot o transazionale, vedere Pubblicare dati e oggetti di database.
[ @artid = ] OUTPUT artid
ID articolo del nuovo articolo. @artid è un parametro OUTPUT di tipo int.
[ @auto_identity_range = ] N'auto_identity_range'
Abilita e disabilita la gestione automatica dell'intervallo di valori Identity in una pubblicazione al momento della creazione. @auto_identity_range è nvarchar(5) e può essere uno dei valori 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 da @identityrangemanagementoption. |
Nota
@auto_identity_range è deprecato e viene fornito solo per la compatibilità con le versioni precedenti. È consigliabile usare @identityrangemanagementoption per specificare le opzioni di gestione degli intervalli di valori Identity. Per altre informazioni, vedere Replicare colonne Identity.
[ @pub_identity_range = ] pub_identity_range
Controlla le dimensioni dell'intervallo nel server di pubblicazione se l'articolo ha @identityrangemanagementoption impostato su auto o @auto_identity_range impostato su true. @pub_identity_range è bigint, con il valore predefinito NULL
. @pub_identity_range non è supportato per i server di pubblicazione Oracle.
[ @identity_range = ] identity_range
Controlla le dimensioni dell'intervallo nel Sottoscrittore se l'articolo ha @identityrangemanagementoption impostato su auto o @auto_identity_range impostato su true. @identity_range è bigint, con il valore predefinito NULL
. Utilizzato quando @auto_identity_range è impostato su true. @identity_range non è supportato per i server di pubblicazione Oracle.
[ @threshold = ] soglia
Valore percentuale che controlla quando l'agente di distribuzione assegna un nuovo intervallo di valori Identity. Quando viene usata la percentuale di valori specificati in @threshold, il agente di distribuzione crea un nuovo intervallo identity. @threshold è int, con il valore predefinito .NULL
Usato quando @identityrangemanagementoption è impostato su auto o @auto_identity_range è impostato su true. @threshold non è supportato per i server di pubblicazione Oracle.
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Riconosce che l'azione eseguita da questa stored procedure può invalidare uno snapshot esistente. @force_invalidate_snapshot è bit, con il valore predefinito 0
.
0
specifica che l'aggiunta di un articolo non causa 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 l'aggiunta di un articolo può causare l'invalidità dello snapshot e, se esistono sottoscrizioni che richiedono un nuovo snapshot, concede l'autorizzazione per contrassegnare lo snapshot esistente come obsoleto e generare un nuovo snapshot.
[ @use_default_datatypes = ] use_default_datatypes
Indica se i mapping dei tipi di dati della colonna predefiniti vengono utilizzati durante la pubblicazione di un articolo da un server di pubblicazione Oracle. @use_default_datatypes è bit, con un valore predefinito .1
1
= vengono usati i mapping delle colonne degli articoli predefiniti. È possibile visualizzare i mapping dei tipi di dati predefiniti eseguendo sp_getdefaultdatatypemapping.0
= i mapping delle colonne dell'articolo personalizzato sono definiti e pertanto sp_articleview non viene chiamato dasp_addarticle
.
Quando @use_default_datatypes è impostato su 0
, è necessario eseguire sp_changearticlecolumndatatype una volta per ogni mapping di colonna modificato 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 di SQL Server genera un errore.
[ @identityrangemanagementoption = ] N'identityrangemanagementoption'
Specifica la modalità di gestione degli intervalli di valori Identity per l'articolo. @identityrangemanagementoption è nvarchar(10)e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
none |
La replica non esegue la gestione degli intervalli dei valori Identity espliciti. Questa opzione è consigliata solo per la compatibilità con le 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) |
L'impostazione predefinita è none quando il valore di @auto_identity_range non true è . L'impostazione manual predefinita è in una topologia peer-to-peer (@auto_identity_range viene ignorata). |
Per la compatibilità con le versioni precedenti, quando il valore di @identityrangemanagementoption è NULL
, viene controllato il valore di @auto_identity_range . Tuttavia, quando il valore di @identityrangemanagementoption non NULL
è , il valore di @auto_identity_range viene ignorato.
Per altre informazioni, vedere Replicare colonne Identity.
[ @publisher = ] N'publisher'
Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL
@publisher non deve essere usato quando si aggiunge un articolo a un server di pubblicazione di SQL Server.
[ @fire_triggers_on_snapshot = ] N'fire_triggers_on_snapshot'
Se i trigger utente replicati vengono eseguiti quando viene applicato lo snapshot iniziale. @fire_triggers_on_snapshot è nvarchar(5), con il valore predefinito false
. true
significa che i trigger utente in una tabella replicata vengono eseguiti quando viene applicato lo snapshot. Affinché i trigger vengano replicati, il valore della maschera di bit di @schema_option deve includere il valore 0x100
.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_addarticle
viene usato nella replica snapshot o nella replica transazionale.
Per impostazione predefinita, la replica non pubblica colonne nella tabella di origine quando il tipo di dati della colonna non è supportato dalla replica. Se è necessario pubblicare una colonna di questo tipo, è necessario eseguire sp_articlecolumn per aggiungere la colonna.
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
16
nel valore @status .Il nome e il proprietario della tabella di destinazione devono corrispondere a quelli della tabella di origine.
L'articolo non può essere filtrato orizzontalmente o verticalmente.
La gestione automatica degli intervalli di valori Identity non è supportata. È necessario specificare un valore manuale per @identityrangemanagementoption.
Se nella tabella è presente una colonna timestamp , è necessario includere 0x08 in @schema_option per replicare la colonna come timestamp.
Non è possibile specificare un valore
SQL
per @ins_cmd, @upd_cmd e @del_cmd.
Per altre informazioni, vedere Peer-to-Peer - Replica transazionale.
Quando si pubblicano gli oggetti, nei Sottoscrittori vengono copiate le relative definizioni. Se si pubblica un oggetto di database che dipende da uno o più oggetti, è necessario pubblicare tutti gli oggetti a cui si fa riferimento. Se ad esempio si pubblica una vista che dipende da una tabella, sarà necessario pubblicare anche la tabella.
Se @vertical_partition è impostato su true, sp_addarticle
rinvia la creazione della visualizzazione fino a quando non viene chiamato sp_articleview (dopo l'aggiunta dell'ultimo sp_articlecolumn ).
Se la pubblicazione consente di aggiornare le sottoscrizioni e la tabella pubblicata non dispone di una colonna uniqueidentifier , sp_addarticle
aggiunge automaticamente una colonna uniqueidentifier alla tabella.
Quando si esegue la replica in un sottoscrittore che non è un'istanza di SQL Server (replica eterogenea), solo le istruzioni Transact-SQL sono supportate per INSERT
i comandi , 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 nel nodo in cui si aggiunge l'articolo. Riavviare l'agente di lettura log dopo aver aggiunto l'articolo.
Quando si imposta @del_cmd su o @ins_cmd su , la propagazione dei comandi potrebbe essere interessata anche dall'invio di UPDATE
tali comandi quando si verifica un aggiornamento associato.NONE
NONE
Un aggiornamento associato è un tipo di istruzione del server di UPDATE
pubblicazione che viene replicato come DELETE
/INSERT
coppia nel sottoscrittore.
Opzioni predefinite dello schema
Questa tabella descrive il valore predefinito impostato dalla replica se @schema_options non è specificato dall'utente, in cui questo valore dipende dal tipo di replica (visualizzato nella parte superiore) e dal tipo di articolo (mostrato nella parte inferiore della prima colonna).
Tipo di articolo | Replica transazionale | Replica snapshot |
---|---|---|
solo schema aggregato | 0x01 |
0x01 |
solo schema func | 0x01 |
0x01 |
solo schema vista indicizzata | 0x01 |
0x01 |
log di vista indicizzata | 0x30F3 |
0x3071 |
indexed view logbase manualboth | 0x30F3 |
0x3071 |
indexed view logbased manualfilter | 0x30F3 |
0x3071 |
vista indicizzata logbased manualview | 0x30F3 |
0x3071 |
logbased | 0x30F3 |
0x3071 |
logbased manualfilter | 0x30F3 |
0x3071 |
logbased manualview | 0x30F3 |
0x3071 |
proc exec | 0x01 |
0x01 |
solo schema proc | 0x01 |
0x01 |
serializable proc exec | 0x01 |
0x01 |
solo schema di visualizzazione | 0x01 |
0x01 |
Nota
Se una pubblicazione è abilitata per l'aggiornamento in coda, viene aggiunto un valore @schema_option al 0x80
valore predefinito visualizzato nella tabella. Il @schema_option predefinito per una pubblicazione non SQL Server è 0x050D3
.
Opzioni di schema valide
Questa tabella descrive i valori consentiti di @schema_option in base al tipo di replica (visualizzato nella parte superiore) e al tipo di articolo (mostrato nella prima colonna).
Tipo di articolo | Replica transazionale | Replica snapshot |
---|---|---|
logbased | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
logbased manualfilter | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
logbased manualview | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
log di vista indicizzata | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
indexed view logbased manualfilter | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
vista indicizzata logbased manualview | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
indexed view logbase manualboth | Tutte le opzioni | Tutte le opzioni, ma 0x02 |
proc exec | 0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
serializable proc exec | 0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
solo schema proc | 0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
solo schema di visualizzazione | 0x01 , , , , 0x0100 0x40000 0x400000 0x100000 0x2000 0x200000 , e 0x2000000 0x40000000 0x800000 0x8000000 0x040 0x010 0x020 0x80000000 |
0x01 , , , , 0x0100 0x40000 0x400000 0x100000 0x2000 0x200000 , e 0x2000000 0x40000000 0x800000 0x8000000 0x040 0x010 0x020 0x80000000 |
solo schema func | 0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
0x01 , 0x20 , , 0x400000 , 0x800000 0x2000000 , 0x20000000 0x8000000 0x10000000 , , e 0x40000000 0x2000 0x80000000 |
solo schema vista indicizzata | 0x01 , , , , 0x0100 0x40000 0x400000 0x100000 0x2000 0x200000 , e 0x2000000 0x40000000 0x800000 0x8000000 0x040 0x010 0x020 0x80000000 |
0x01 , , , , 0x0100 0x40000 0x400000 0x100000 0x2000 0x200000 , e 0x2000000 0x40000000 0x800000 0x8000000 0x040 0x010 0x020 0x80000000 |
Nota
Per le pubblicazioni ad aggiornamento in coda, i valori @schema_option di 0x8000
e 0x80
devono essere abilitati. I valori di @schema_option supportati per le pubblicazioni non SQL Server sono: 0x01
, 0x02
, 0x40
0x10
, 0x80
, , 0x1000
0x4000
e 0X8000
.
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_addarticle
.
Contenuto correlato
- Define an Article
- 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)
- Pubblicare dati e oggetti di database