sp_changepublication (Transact-SQL)
Consente di modificare le proprietà di una pubblicazione. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni della sintassi Transact-SQL
Sintassi
sp_changepublication [ [ @publication = ] 'publication' ]
[ , [ @property = ] 'property' ]
[ , [ @value = ] 'value' ]
[ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
[ , [ @force_reinit_subscription = ] force_reinit_subscription ]
[ , [ @publisher = ] 'publisher' ]
Argomenti
[ @publication = ] 'publication'
Nome della pubblicazione. publication è di tipo sysname e il valore predefinito è NULL.[ @property = ] 'property'
Proprietà della pubblicazione da modificare. property è di tipo nvarchar(255).[ @value = ] 'value'
Nuovo valore della proprietà. value è di tipo nvarchar(255) e il valore predefinito è NULL.Nella tabella seguente vengono descritte le proprietà della pubblicazione che è possibile modificare e le limitazioni previste per i valori di tali proprietà.
Proprietà
Valore
Descrizione
allow_anonymous
true
È consentito creare sottoscrizioni anonime per la pubblicazione specificata. È necessario che anche la proprietà immediate_sync sia impostata su true. Non è possibile modificare questa proprietà per pubblicazioni peer-to-peer.
false
Non è consentito creare sottoscrizioni anonime per la pubblicazione specificata. Non è possibile modificare questa proprietà per pubblicazioni peer-to-peer.
allow_initialize_from_backup
true
I Sottoscrittori possono inizializzare una sottoscrizione di questa pubblicazione da un backup anziché da uno snapshot iniziale. Non è possibile modificare questa proprietà per pubblicazioni non Microsoft SQL Server.
false
I Sottoscrittori devono utilizzare lo snapshot iniziale. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
allow_partition_switch
true
Le istruzioni ALTER TABLE...SWITCH possono essere eseguite sul database pubblicato. Per ulteriori informazioni, vedere Replica di tabelle e indici partizionati.
false
Le istruzioni ALTER TABLE...SWITCH non possono essere eseguite sul database pubblicato.
allow_pull
true
È consentito creare sottoscrizioni pull per la pubblicazione specificata. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false
Non è consentito creare sottoscrizioni pull per la pubblicazione specificata. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
allow_push
true
È consentito creare sottoscrizioni push per la pubblicazione specificata.
false
Non è consentito creare sottoscrizioni push per la pubblicazione specificata.
allow_subscription_copy
true
Attiva la funzionalità che consente di copiare i database che sottoscrivono la pubblicazione. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false
Disabilita la funzionalità che consente di copiare i database che sottoscrivono la pubblicazione. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
alt_snapshot_folder
Posizione della cartella alternativa per lo snapshot.
centralized_conflicts
true
I record dei conflitti vengono archiviati nel server di pubblicazione. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false
I record dei conflitti vengono archiviati sia nel server di pubblicazione che nel Sottoscrittore che ha causato il conflitto. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
compress_snapshot
true
Lo snapshot in una cartella snapshot alternativa viene compresso nel formato di file CAB. Non è possibile comprimere lo snapshot nella cartella snapshot predefinita.
false
Lo snapshot non viene compresso, come previsto dall'impostazione predefinita per la replica.
conflict_policy
pub wins
Criteri di risoluzione dei conflitti per Sottoscrittori aggiornabili in base a cui prevale il server di pubblicazione. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Questa proprietà non è supportata per server di pubblicazione Oracle.
sub reinit
Criterio di risoluzione dei conflitti per Sottoscrittori aggiornabili in base a cui la sottoscrizione deve essere reinizializzata se si verifica un conflitto. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Questa proprietà non è supportata per server di pubblicazione Oracle.
sub wins
Criteri di risoluzione dei conflitti per Sottoscrittori aggiornabili in base a cui prevale il Sottoscrittore. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Questa proprietà non è supportata per server di pubblicazione Oracle.
conflict_retention
Valore int che specifica il periodo di memorizzazione dei conflitti, espresso in giorni. L'impostazione predefinita è 14 giorni. Il valore 0 indica che non è necessario rimuovere i conflitti. Questa proprietà non è supportata per server di pubblicazione Oracle.
description
Voce facoltativa di descrizione della pubblicazione.
enabled_for_het_sub
true
Abilita il supporto dei Sottoscrittori non SQL Server nella pubblicazione. Non è possibile modificare la proprietà enabled_for_het_sub quando esistono sottoscrizioni della pubblicazione. Prima di impostare la proprietà enabled_for_het_sub su true, potrebbe essere necessario eseguire sp_changepublication (Transact-SQL) per soddisfare i requisiti seguenti:
La proprietà allow_queued_tran deve essere impostata su false.
La proprietà allow_sync_tran deve essere impostata su false.
Se si imposta enabled_for_het_sub su true, è possibile che le impostazioni esistenti della pubblicazione vengano modificate. Per ulteriori informazioni, vedere Sottoscrittori non SQL Server. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false
La pubblicazione non supporta Sottoscrittori non SQL Server. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
enabled_for_internet
true
La pubblicazione è abilitata per Internet ed è possibile utilizzare FTP (File Transfer Protocol) per il trasferimento dei file di snapshot in un Sottoscrittore. I file di sincronizzazione della pubblicazione vengono inseriti nella directory seguente: C:\Programmi\Microsoft SQL Server\MSSQL\Repldata\ftp. ftp_address non può essere NULL. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false
La pubblicazione non è abilitata per Internet. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
enabled_for_p2p
true
La pubblicazione supporta la replica peer-to-peer. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
Per l'impostazione della proprietà enabled_for_p2p su true, vengono applicate le restrizioni seguenti:
La proprietà allow_anonymous deve essere impostata su false.
La proprietà allow_dts deve essere impostata su false.
La proprietà allow_initialize_from_backup deve essere impostata su true.
La proprietà allow_queued_tran deve essere impostata su false.
La proprietà allow_sync_tran deve essere impostata su false.
La proprietà enabled_for_het_sub deve essere impostata su false.
La proprietà independent_agent deve essere impostata su true.
La proprietà repl_freq deve essere impostata su continuous.
La proprietà replicate_ddl deve essere impostata su 1.
false
La pubblicazione non supporta la replica peer-to-peer. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
ftp_address
Percorso accessibile tramite FTP dei file di snapshot della pubblicazione. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
ftp_login
Nome utente utilizzato per la connessione al servizio FTP. Il valore ANONYMOUS è supportato. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
ftp_password
Password del nome utente utilizzato per la connessione al servizio FTP. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
ftp_port
Numero di porta del servizio FTP per il server di distribuzione. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
ftp_subdirectory
Specifica la posizione in cui vengono creati i file di snapshot se la pubblicazione supporta la propagazione di snapshot tramite FTP. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
immediate_sync
true
I file di sincronizzazione della pubblicazione vengono creati o ricreati a ogni esecuzione dell'agente snapshot. Se l'esecuzione dell'agente snapshot è stata completata una volta prima della sottoscrizione, i Sottoscrittori possono ricevere i file di sincronizzazione immediatamente dopo la sottoscrizione. Le nuove sottoscrizioni ricevono i file di sottoscrizione più recenti generati dall'ultima esecuzione dell'agente snapshot. Anche il parametro independent_agent deve essere impostato su true. Per ulteriori informazioni su immediate_sync, vedere la sezione Note in basso.
false
I file di sincronizzazione vengono creati solo se esistono nuove sottoscrizioni. I Sottoscrittori ricevono i file di sincronizzazione dopo la sottoscrizione solo se l'agente snapshot è stato avviato e completato.
independent_agent
true
Per la pubblicazione viene utilizzato un agente di distribuzione dedicato.
false
Per la pubblicazione viene utilizzato un agente di distribuzione condiviso e a ogni coppia database di pubblicazione/database di sottoscrizione è associato un agente condiviso.
p2p_continue_onconflict
true
L'agente di distribuzione continua a elaborare le modifiche quando viene rilevato un conflitto.
Attenzione È consigliabile utilizzare il valore predefinito FALSE. Quando questa opzione è impostata su TRUE, l'agente di distribuzione tenta di garantire la convergenza dei dati nella topologia applicando la riga in conflitto dal nodo con ID di origine maggiore. Questo metodo non garantisce la convergenza. Dopo il rilevamento di un conflitto, è necessario assicurarsi che la topologia sia coerente. Per ulteriori informazioni, vedere la sezione relativa alla gestione dei conflitti in Rilevamento dei conflitti nella replica peer-to-peer.
false
L'agente di distribuzione arresta l'elaborazione delle modifiche quando viene rilevato un conflitto.
post_snapshot_script
Specifica il percorso di un file script Transact-SQL eseguito dall'agente di distribuzione dopo l'applicazione di tutti gli altri dati e script di oggetti replicati durante una sincronizzazione iniziale.
pre_snapshot_script
Specifica il percorso di un file script Transact-SQL eseguito dall'agente di distribuzione prima dell'applicazione di tutti gli altri dati e script di oggetti replicati durante una sincronizzazione iniziale.
publish_to_ActiveDirectory
true
Questo parametro è deprecato ed è supportato solo per compatibilità con gli script di versioni precedenti. Non è più possibile aggiungere informazioni di pubblicazione in Microsoft Active Directory.
false
Rimuove le informazioni sulla pubblicazione da Active Directory.
queue_type
sql
Consente di utilizzare SQL Server per l'archiviazione delle transazioni. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive.
[!NOTA]
L'utilizzo di MSMQ (Microsoft Message Queuing) non è più supportato. Se si specifica msmq per value, viene generato un errore.
repl_freq
continuous
Pubblica l'output di tutte le transazioni basate su log.
snapshot
Pubblica solo gli eventi di sincronizzazione pianificati.
replicate_ddl
1
Le istruzioni DDL (Data Definition Language) eseguite nel server di pubblicazione vengono replicate. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
0
Le istruzioni DDL non vengono replicate. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server. La replica delle modifiche dello schema non può essere disabilitata in caso di utilizzo della replica peer-to-peer.
replicate_partition_switch
true
Le istruzioni ALTER TABLE...SWITCH eseguite sul database pubblicato devono essere replicate ai Sottoscrittori. Questa opzione è valida solo se allow_partition_switch è impostato su TRUE. Per ulteriori informazioni, vedere Replica di tabelle e indici partizionati.
false
Le istruzioni ALTER TABLE...SWITCH non devono essere replicate ai Sottoscrittori.
retention
Valore int che rappresenta il periodo di memorizzazione, espresso in ore, per le attività di sottoscrizione. Se una sottoscrizione non viene attivata entro il periodo di memorizzazione, viene rimossa.
snapshot_in_defaultfolder
true
I file di snapshot sono archiviati nella cartella snapshot predefinita. Se viene specificata anche la proprietà alt_snapshot_folder, i file di snapshot vengono archiviati sia nella posizione predefinita che in quella alternativa.
false
I file di snapshot sono archiviati nella posizione alternativa specificata in alt_snapshot_folder.
status
active
I dati della pubblicazione risultano immediatamente disponibili per i Sottoscrittori quando viene creata la pubblicazione. Questa proprietà non è supportata per server di pubblicazione Oracle.
inactive
I dati della pubblicazione non sono disponibili per i Sottoscrittori quando viene creata la pubblicazione. Questa proprietà non è supportata per server di pubblicazione Oracle.
sync_method
native
Consente di utilizzare l'output generato dal programma per la copia bulk in modalità nativa per tutte le tabelle durante la sincronizzazione delle sottoscrizioni.
character
Consente di utilizzare l'output generato dal programma per la copia bulk in modalità carattere per tutte le tabelle durante la sincronizzazione delle sottoscrizioni.
concurrent
Consente di utilizzare l'output generato dal programma per la copia bulk in modalità nativa per tutte le tabelle, senza tuttavia bloccare le tabelle durante il processo di generazione dello snapshot. Questa proprietà non è valida per la replica snapshot.
concurrent_c
Consente di utilizzare l'output generato dal programma per la copia bulk in modalità carattere per tutte le tabelle, senza tuttavia bloccare le tabelle durante il processo di generazione dello snapshot. Questa proprietà non è valida per la replica snapshot.
taskid
Questa proprietà è deprecata e non è più supportata.
NULL (predefinito)
Restituisce l'elenco dei valori supportati per property.
[ @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.Il valore 0 indica che le modifiche apportate all'articolo non invalidano lo snapshot. Se la stored procedure rileva che la modifica richiede un nuovo snapshot, viene generato un errore e non viene apportata alcuna modifica.
Il valore 1 indica che le modifiche apportate all'articolo possono invalidare lo snapshot. Se alcune sottoscrizioni esistenti richiedono un nuovo snapshot, questo valore consente di contrassegnare lo snapshot esistente come obsoleto e di generarne uno nuovo.
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
Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. force_reinit_subscription è di tipo bit e il valore predefinito è 0.Il valore 0 indica 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.
Il valore 1 indica che le modifiche apportate all'articolo causano la reinizializzazione della sottoscrizione esistente e consente di eseguire la reinizializzazione della sottoscrizione.
[ @publisher = ] 'publisher'
Specifica un server di pubblicazione non SQL Server. publisher è di tipo sysname e il valore predefinito è NULL.[!NOTA]
Evitare di utilizzare publisher quando si modificano le proprietà di un articolo in un server di pubblicazione SQL Server.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
sp_changepublication viene utilizzata per la replica snapshot e transazionale.
La modifica di una qualsiasi delle proprietà seguenti richiede la generazione di un nuovo snapshot. È necessario specificare il valore 1 per il parametro force_invalidate_snapshot.
alt_snapshot_folder
compress_snapshot
enabled_for_het_sub
ftp_address
ftp_login
ftp_password
ftp_port
ftp_subdirectory
post_snapshot_script
pre_snapshot_script
snapshot_in_defaultfolder
sync_mode
Per elencare oggetti di pubblicazione in Active Directory mediante il parametro publish_to_active_directory, è necessario che l'oggetto di SQL Server sia già stato creato in Active Directory.
Impatto della sincronizzazione immediata
Quando la sincronizzazione immediata è attiva, tutte le modifiche nel log vengono rilevate subito dopo la generazione dello snapshot iniziale anche se non sono presenti sottoscrizioni. Le modifiche registrate saranno applicate quando un cliente sta utilizzando il backup per aggiungere un nuovo nodo peer. Una volta ripristinato il backup, il peer sarà sincronizzato con qualsiasi altra modifica che si verifica dopo l'esecuzione del backup. Poiché i comandi vengono rilevati nel database di distribuzione, tramite la logica di sincronizzazione è possibile analizzare l'ultimo LSN di cui è stato eseguito il backup, sapendo che il comando sarà disponibile se il backup è stato eseguito entro il periodo di memorizzazione massimo. Il valore predefinito per il periodo di memorizzazione minimo è 0 ore e il periodo di memorizzazione massimo è 24 ore.
Quando la sincronizzazione immediata è disattivata, le modifiche vengono mantenute per almeno il periodo di memorizzazione minimo e vengono eliminate immediatamente per tutte le transazioni già replicate. Se la sincronizzazione immediata è disattivata e configurata con il periodo di memorizzazione predefinito, è probabile che le modifiche necessarie dopo l'esecuzione del backup vengano eliminate e che il nuovo nodo peer non venga inizializzato correttamente. L'unica soluzione possibile è la disattivazione della topologia. Se si attiva la sincronizzazione immediata si ottiene una maggiore flessibilità; inoltre si tratta dell'impostazione consigliata per la replica P2P.
Esempio
DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran'
-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2012]
EXEC sp_changepublication
@publication = @publication,
@property = N'replicate_ddl',
@value = 0
GO
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_changepublication.
Vedere anche
Riferimento
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Stored procedure per la replica (Transact-SQL)
Concetti
Visualizzazione e modifica delle proprietà della pubblicazione