sp_changearticle (Transact-SQL)
Si applica a:SQL Server Istanza gestita di SQL di Azure
Modifica le proprietà di un articolo in una pubblicazione transazionale o snapshot. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni di sintassi Transact-SQL
Sintassi
sp_changearticle [ [@publication= ] 'publication' ]
[ , [ @article= ] 'article' ]
[ , [ @property= ] 'property' ]
[ , [ @value= ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
Argomenti
[ @publication = ] 'publication'
Nome della pubblicazione contenente l'articolo. publication è sysname, con valore predefinito NULL.
[ @article = ] 'article'
Nome dell'articolo la cui proprietà deve essere modificata. article è sysname, con un valore predefinito NULL.
[ @property = ] 'property'
Proprietà dell'articolo da modificare. property è nvarchar(100).
[ @value = ] 'value'
Nuovo valore della proprietà article. value è nvarchar(255).
Nella tabella seguente vengono descritte le proprietà degli articoli e i valori corrispondenti.
Proprietà | Valori | Descrizione |
---|---|---|
creation_script | Percorso e nome di uno script di schema dell'articolo utilizzato per la creazione delle tabelle di destinazione. Il valore predefinito è NULL. | |
del_cmd | Istruzione DELETE da eseguire. In alternativa, viene creata dal log. | |
description | Nuova voce descrittiva per l'articolo. | |
dest_object | Disponibile per compatibilità con le versioni precedenti. Usare dest_table. | |
dest_table | Nuova tabella di destinazione. | |
destination_owner | Nome del proprietario dell'oggetto di destinazione. | |
filter | Nuova stored procedure da utilizzare per filtrare la tabella in modo orizzontale. Il valore predefinito è NULL. Non può essere modificato per le pubblicazioni nella replica peer-to-peer. | |
fire_triggers_on_snapshot | vero | I trigger utente replicati vengono eseguiti quando si applica lo snapshot iniziale. Nota: per i trigger da replicare, il valore della maschera di bit di schema_option deve includere il valore 0x100. |
false | I trigger utente replicati non vengono eseguiti quando si applica lo snapshot iniziale. | |
identity_range | Controlla le dimensioni degli intervalli di valori Identity assegnati nel Sottoscrittore. Non supportato per la replica peer-to-peer. | |
ins_cmd | Istruzione INSERT da eseguire. In alternativa, viene creata dal log. | |
pre_creation_cmd | Comando preliminare per eliminare, rimuovere o troncare la tabella di destinazione prima della sincronizzazione. | |
none | Non utilizza alcun comando. | |
Goccia | Rimuove la tabella di destinazione. | |
delete | Elimina la tabella di destinazione. | |
truncate | Tronca la tabella di destinazione. | |
pub_identity_range | Controlla le dimensioni degli intervalli di valori Identity assegnati nel Sottoscrittore. Non supportato per la replica peer-to-peer. | |
schema_option | Specifica la mappa di bit dell'opzione di generazione dello schema per l'articolo specificato. schema_option è binary(8).schema_option is binary(8). Per ulteriori informazioni, vedere la sezione Osservazioni di seguito in questo argomento. | |
0x00 | Disabilita la creazione di script eseguita dall'agente snapshot. | |
0x01 | Genera le istruzioni per la creazione di oggetti (CREATE TABLE, CREATE PROCEDURE e così via). | |
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. | |
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. Questa proprietà non è supportata per server di pubblicazione Oracle. | |
0x40 | Genera indici non cluster corrispondenti. | |
0x80 | include i vincoli di integrità referenziale dichiarati nelle chiavi primarie. | |
0x100 | Replica gli eventuali trigger dell'utente di un articolo di tabella. | |
0x200 | Replica i vincoli FOREIGN KEY. Se la tabella con riferimenti non fa parte di una pubblicazione, tutti i vincoli FOREIGN KEY in una tabella pubblicata non vengono replicati. | |
0x400 | Replica i vincoli CHECK. | |
0x800 | Replica i valori predefiniti. | |
0x1000 | Replica le regole di confronto a livello di colonna. | |
0x2000 | Replica le proprietà estese associate all'oggetto di origine dell'articolo pubblicato. | |
0x4000 | Replica le eventuali chiavi univoche definite in un articolo di tabella. | |
0x8000 | Replica come vincoli la chiave primaria e le chiavi univoche di un articolo di tabella tramite istruzioni ALTER TABLE. Nota: questa opzione è stata deprecata. Usare invece 0x80 e 0x4000 . |
|
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 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 | 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 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 dello schema. Vedere l'opzione correlata 0x800000000. |
|
0x200000000 | Converte i tipi di dati di data e ora (date, time, 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 altre informazioni, vedere Data Compression. | |
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 oggetti prima di applicare lo snapshot, vedere Eseguire script prima e dopo l'applicazione dello snapshot. Vedere l'opzione correlata 0x100000000. |
|
0x1000000000 | Converte tipi CLR (Common Language Runtime) definiti dall'utente (UDT) superiori a 8000 byte in varbinary(max) in modo che le colonne di tipo definito dall'utente 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 (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 (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. | |
status | Nuovo stato della proprietà. | |
dts partizioni orizzontali | Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future. | |
includere nomi di colonna | I nomi delle colonne sono inclusi nell'istruzione INSERT replicata. | |
nessun nome di colonna | I nomi delle colonne non sono inclusi nell'istruzione INSERT replicata. | |
nessuna partizione orizzontale dts | La partizione orizzontale per l'articolo non è definita da una sottoscrizione trasformabile. | |
none | Cancella tutte le opzioni di stato nella tabella sysarticles e contrassegna l'articolo come inattivo. | |
parameters | Le modifiche vengono propagate al Sottoscrittore tramite i comandi con parametri. Questa è l'impostazione predefinita per un nuovo articolo. | |
valori letterali stringa | Le modifiche vengono propagate al Sottoscrittore tramite i valori letterali stringa. | |
sync_object | Nome della tabella o vista utilizzata per generare un file di output di sincronizzazione. Il valore predefinito è NULL. Questa proprietà non è supportata per server di pubblicazione Oracle. | |
Tablespace | Identifica lo spazio tabella utilizzato dalla tabella di registrazione per un articolo pubblicato da un database Oracle. Per altre informazioni, vedere Gestire spazi di tabella Oracle. | |
threshold | Valore percentuale che controlla quando l'agente di distribuzione assegna un nuovo intervallo di valori Identity. Non supportato per la replica peer-to-peer. | |
type | Questa proprietà non è supportata per server di pubblicazione Oracle. | |
logbased | Articolo basato su un log. | |
logbased manualboth | Articolo basato su log con filtro manuale e vista manuale. Questa opzione richiede che siano impostate anche le proprietà di sync_object e filtro . Questa proprietà non è supportata per server di pubblicazione Oracle. | |
logbased manualfilter | Articolo basato su log con filtro manuale. Questa opzione richiede che siano impostate anche le proprietà di sync_object e filtro . Questa proprietà non è supportata per server di pubblicazione Oracle. | |
logbased manualview | Articolo basato su log con vista manuale. Questa opzione richiede che sia impostata anche la proprietà sync_object . Questa proprietà non è supportata per server di pubblicazione Oracle. | |
indexed viewlogbased | Articolo di vista indicizzata basato su log. Questa proprietà non è supportata per server di pubblicazione Oracle. Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. | |
indexed viewlogbased manualboth | Articolo di vista indicizzata basato su log con filtro manuale e vista manuale. Questa opzione richiede che siano impostate anche le proprietà di sync_object e filtro . Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questa proprietà non è supportata per server di pubblicazione Oracle. | |
indexed viewlogbased manualfilter | Articolo di vista indicizzata basato su log con filtro manuale. Questa opzione richiede anche l'impostazione delle proprietà di sync_object e filtro . Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questa proprietà non è supportata per server di pubblicazione Oracle. | |
indexed viewlogbased manualview | Articolo di vista indicizzata basato su log con vista manuale. Questa opzione richiede che sia impostata anche la proprietà sync_object . Per questo tipo di articolo non è necessario pubblicare separatamente la tabella di base. Questa proprietà non è supportata per server di pubblicazione Oracle. | |
upd_cmd | Istruzione UPDATE da eseguire. In alternativa, viene creata dal log. | |
NULL | NULL | Restituisce un elenco di proprietà dell'articolo che è possibile modificare. |
[ @force_invalidate_snapshot = ] force_invalidate_snapshot
Riconosce che l'azione eseguita da questa stored procedure può invalidare uno snapshot esistente. force_invalidate_snapshot è un po', con un valore predefinito pari a 0.
0 specifica che le modifiche apportate all'articolo non causano l'invalidità dello snapshot. Se la stored procedure rileva che la modifica richiede un nuovo snapshot, viene generato un errore e non viene apportata alcuna modifica.
1 specifica che le modifiche apportate all'articolo possono causare l'invalidità dello snapshot e, se sono presenti sottoscrizioni esistenti che richiedono un nuovo snapshot, concede l'autorizzazione per contrassegnare lo snapshot esistente come obsoleto e un nuovo snapshot generato.
Per informazioni sulle proprietà che richiedono la generazione di un nuovo snapshot quando vengono modificate, vedere la sezione Osservazioni.
[ @force_reinit_subscription = ]force_reinit_subscription_
Riconosce che l'azione intrapresa da questa stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è un po' con un valore predefinito pari a 0.
0 specifica che le modifiche apportate all'articolo non causano la reinizializzazione della sottoscrizione. Se la stored procedure rileva che la modifica richiede la reinizializzazione delle sottoscrizioni esistenti, viene generato un errore e non viene apportata alcuna modifica.
1 specifica che le modifiche apportate all'articolo causano la reinizializzazione delle sottoscrizioni esistenti e concede l'autorizzazione per la reinizializzazione della sottoscrizione.
Per ulteriori informazioni sulle proprietà che richiedono la reinizializzazione di tutte le sottoscrizioni esistenti in caso di modifica, vedere la sezione Osservazioni.
[ @publisher = ] 'publisher'
Specifica un server di pubblicazione non SQL Server. publisher è sysname, con valore predefinito NULL.
Nota
Non è consigliabile usare publisher quando si modificano le proprietà dell'articolo in un server di pubblicazione di SQL Server.
Valori del codice restituito
0 (esito positivo) o 1 (errore)
Osservazioni:
sp_changearticle viene usato nella replica snapshot e nella replica transazionale.
Quando un articolo appartiene a una pubblicazione che supporta la replica transazionale peer-to-peer, è possibile modificare solo la descrizione, ins_cmd, upd_cmd e le proprietà del_cmd .
Per modificare una delle proprietà seguenti è necessario generare un nuovo snapshot e specificare il valore 1 per il parametro force_invalidate_snapshot:
del_cmd
dest_table
destination_owner
ins_cmd
pre_creation_cmd
schema_options
upd_cmd
Per modificare una delle proprietà seguenti è necessario reinizializzare le sottoscrizioni esistenti e specificare il valore 1 per il parametro force_reinit_subscription.
del_cmd
dest_table
destination_owner
filter
ins_cmd
status
upd_cmd
All'interno di una pubblicazione esistente, è possibile utilizzare sp_changearticle per modificare un articolo senza dover eliminare e ricreare l'intera pubblicazione.
Nota
Quando si modifica il valore di schema_option, il sistema non esegue un aggiornamento bit per bit. Ciò significa che quando si imposta schema_option usando sp_changearticle, le impostazioni di bit esistenti potrebbero essere disattivate. Per mantenere le impostazioni esistenti, è necessario eseguire | (OR bit per bit) tra il valore impostato e il valore corrente di schema_option, che può essere determinato eseguendo sp_helparticle.
Opzioni di schema valide
Nella tabella seguente vengono descritti i valori consentiti di schema_option in base al tipo di replica (mostrato nella parte superiore) e al tipo di articolo (mostrato nella prima colonna).
Tipo di articolo | Tipo di replica - Transazionale | Tipo di 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, 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 |
solo schema proc | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
solo schema di visualizzazione | 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 |
solo schema func | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 | 0x01, 0x20, 0x2000, 0x400000, 0x800000, 0x2000000, 0x8000000, 0x10000000, 0x20000000, 0x40000000 e 0x80000000 |
solo schema vista indicizzata | 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, è necessario abilitare il valore schema_option di 0x80 . I valori di schema_option supportati per le pubblicazioni non SQL Server sono: 0x01, 0x02, 0x10, 0x40, 0x80, 0x1000 e 0x4000.
Esempio
DECLARE @publication AS sysname;
DECLARE @article AS sysname;
DECLARE @option AS int;
SET @publication = N'AdvWorksProductTran';
SET @article = N'Product';
SET @option = (SELECT CAST(0x0000000002030073 AS int));
-- Change the schema options to replicate schema with XML.
USE [AdventureWorks2022]
EXEC sp_changearticle
@publication = @publication,
@article = @article,
@property = N'schema_option',
@value = @option,
@force_invalidate_snapshot = 1;
GO
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_changearticle.
Vedi anche
Visualizzare e modificare le proprietà degli articoli
Modificare le proprietà di pubblicazioni e articoli
sp_addarticle (Transact-SQL)
sp_articlecolumn (Transact-SQL)
sp_droparticle (Transact-SQL)
sp_helparticle (Transact-SQL)
sp_helparticlecolumns (Transact-SQL)
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: nel corso del 2024 verranno dismessi i problemi di GitHub come meccanismo di feedback per il contenuto e verranno sostituiti con un nuovo sistema di feedback. Per altre informazioni, vedere:Invia e visualizza il feedback per