sp_changepublication (Transact-SQL)

Si applica a:SQL Server Istanza gestita di SQL di Azure

Consente di modificare le proprietà di una pubblicazione. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Convenzioni di 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 è sysname, con valore predefinito NULL.

[ @property = ] 'property' Proprietà della pubblicazione da modificare. property è nvarchar(255).

[ @value = ] 'value' Nuovo valore della proprietà. value è nvarchar(255), con 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 vero È possibile creare sottoscrizioni anonime per la pubblicazione specificata e immediate_sync deve essere 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 vero I Sottoscrittori possono inizializzare una sottoscrizione di questa pubblicazione da un backup anziché da uno snapshot iniziale. Questa proprietà non può essere modificata per le pubblicazioni non di Microsoft SQL Server.
false I Sottoscrittori devono utilizzare lo snapshot iniziale. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
allow_partition_switch vero ALTER TABLE... Le istruzioni SWITCH possono essere eseguite sul database pubblicato. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
false ALTER TABLE... Non è possibile eseguire istruzioni SWITCH sul database pubblicato.
allow_pull vero È consentita la creazione di sottoscrizioni pull per la pubblicazione specificata. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
false Non è consentita la creazione di sottoscrizioni pull per la pubblicazione specificata. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
allow_push vero È consentita la creazione di sottoscrizioni push per la pubblicazione specificata.
false Non è consentita la creazione di sottoscrizioni push per la pubblicazione specificata.
allow_subscription_copy vero Attiva la funzionalità che consente di copiare i database che sottoscrivono la pubblicazione. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
false Disabilita la funzionalità che consente di copiare i database che sottoscrivono la pubblicazione. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
alt_snapshot_folder Posizione della cartella alternativa per lo snapshot.
centralized_conflicts vero I record con conflitti vengono archiviati nel server di pubblicazione. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive. Questa proprietà non può essere modificata per le 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. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
compress_snapshot vero Lo snapshot in una cartella snapshot alternativa viene compresso nel formato di file CAB. Non è possibile comprimere lo snapshot all'interno della cartella snapshot predefinita.
false Lo snapshot non viene compresso, come previsto dall'impostazione predefinita per la replica.
conflict_policy pub vince 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.
reinizializzazione secondaria 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.
vittorie secondarie 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 int che specifica il periodo di conservazione dei conflitti, espresso in giorni. L'impostazione predefinita è 14 giorni. 0 indica che non è necessaria alcuna pulizia dei conflitti. Questa proprietà non è supportata per server di pubblicazione Oracle.
description Voce facoltativa di descrizione della pubblicazione.
enabled_for_het_sub vero Consente alla pubblicazione di supportare sottoscrittori non SQL Server. enabled_for_het_sub non può essere modificato quando sono presenti sottoscrizioni alla pubblicazione. Potrebbe essere necessario eseguire stored procedure di replica (Transact-SQL) per rispettare i requisiti seguenti prima di impostare enabled_for_het_sub su true:
- allow_queued_tran deve essere false.
- allow_sync_tran deve essere false.
La modifica di enabled_for_het_sub su true può modificare le impostazioni di pubblicazione esistenti. Per altre informazioni, vedere Non-SQL Server Subscribers. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
false La pubblicazione non supporta sottoscrittori non SQL Server. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
enabled_for_internet vero 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. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
false La pubblicazione non è abilitata per Internet. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
enabled_for_p2p vero La pubblicazione supporta la replica peer-to-peer. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
Per impostare enabled_for_p2p su true, si applicano le restrizioni seguenti:
- allow_anonymous deve essere false
- allow_dts deve essere false.
- allow_initialize_from_backup deve essere true
- allow_queued_tran deve essere false.
- allow_sync_tran deve essere false.
- enabled_for_het_sub deve essere false.
- independent_agent deve essere true.
- repl_freq deve essere continuo.
- replicate_ddl deve essere 1.
false La pubblicazione non supporta la replica peer-to-peer. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
ftp_address Percorso accessibile tramite FTP dei file di snapshot della pubblicazione. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
ftp_login Nome utente utilizzato per la connessione al servizio FTP. Il valore ANONYMOUS è supportato. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
ftp_password Password del nome utente utilizzato per la connessione al servizio FTP. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
ftp_port Numero di porta del servizio FTP per il server di distribuzione. Questa proprietà non può essere modificata per le 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. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
immediate_sync vero 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. independent_agent deve anche essere true. Per altre informazioni sulle immediate_sync, vedere le osservazioni seguenti.
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 vero 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 vero L'agente di distribuzione continua a elaborare le modifiche quando viene rilevato un conflitto.
Attenzione: è consigliabile usare il valore predefinito di FALSE. Quando questa opzione è impostata su TRUE, il agente di distribuzione tenta di convergere i dati nella topologia applicando la riga in conflitto dal nodo con l'ID origine più alto. 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 Conflict Detection in Peer-to-Peer Replication.
false L'agente di distribuzione arresta l'elaborazione delle modifiche quando viene rilevato un conflitto.
post_snapshot_script Specifica il percorso di un file di script Transact-SQL eseguito dall'agente di distribuzione dopo l'applicazione di tutti gli altri script e dati degli oggetti replicati durante una sincronizzazione iniziale.
pre_snapshot_script Specifica il percorso di un file di script Transact-SQL eseguito dall'agente di distribuzione prima dell'applicazione di tutti gli altri script e dati degli oggetti replicati durante una sincronizzazione iniziale.
publish_to_ActiveDirectory vero Questo parametro è deprecato ed è supportato solo per compatibilità con gli script di versioni precedenti. Non è più possibile aggiungere informazioni sulla pubblicazione a Microsoft Active Directory.
false Rimuove le informazioni sulla pubblicazione da Active Directory.
queue_type sql Usare SQL Server per archiviare le transazioni. È possibile modificare questa proprietà solo se non esistono sottoscrizioni attive.

Nota: il supporto per l'uso di Accodamento messaggi Microsoft non è più disponibile. Se si specifica un valore msmqper il valore, viene generato un errore.
redirected_publisher Nome del listener del gruppo di disponibilità. Usato nella replica peer-to-peer quando un peer si trova in un gruppo di disponibilità. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server. Introdotto in SQL Server 2019 (15.x) CU 13. Per altre informazioni, vedere Configurare un peer come parte del gruppo di disponibilità o Configurare entrambi i peer nei gruppi di disponibilità.
repl_freq Continuo 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. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
0 Non viene eseguita la replica delle istruzioni DDL. Questa proprietà non può essere modificata per le 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 vero ALTER TABLE... Le istruzioni SWITCH eseguite sul database pubblicato devono essere replicate nei Sottoscrittori. Questa opzione è valida solo se allow_partition_switch è impostato su TRUE. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
false ALTER TABLE... Le istruzioni SWITCH non devono essere replicate nei Sottoscrittori.
conservazione int che rappresenta il periodo di conservazione, espresso in ore, per l'attività della sottoscrizione. Se una sottoscrizione non viene attivata entro il periodo di memorizzazione, viene rimossa.
snapshot_in_defaultfolder vero I file di snapshot sono memorizzati nella cartella snapshot predefinita. Se viene specificata anche alt_snapshot_folder, i file di snapshot vengono archiviati sia nei percorsi predefiniti che in percorsi alternativi.
false I file di snapshot vengono archiviati nel percorso alternativo specificato da 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.
Simultanee 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.
allow_drop vero Abilita il DROP TABLE supporto dll per gli articoli che fanno parte della replica transazionale. Versione minima supportata: SQL Server 2014 (12.x) Service Pack 2 o versione successiva e SQL Server 2016 (13.x) Service Pack 1 o versione successiva. Informazioni di riferimento aggiuntive: 3170123 KB
false Disabilita il DROP TABLE supporto delle DLL per gli articoli che fanno parte della replica transazionale. Questo è il valore predefinito per questa proprietà.
NULL (impostazione predefinita) Restituisce l'elenco dei valori supportati per la proprietà .

[ @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 potrebbero causare l'invalidità dello 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 è 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 della sottoscrizione esistente e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @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_changepublication viene usato nella replica snapshot e nella replica transazionale.

Dopo aver modificato una delle proprietà seguenti, è necessario generare un nuovo snapshot ed è 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 gli oggetti pubblicazione in Active Directory usando il parametro publish_to_active_directory , è necessario creare l'oggetto SQL Server in Active Directory.

Impatto della sincronizzazione immediata

Quando la sincronizzazione immediata è attiva, tutte le modifiche nel log vengono rilevate immediatamente dopo la generazione dello snapshot iniziale anche se non sono presenti sottoscrizioni. Le modifiche registrate vengono usate quando un cliente usa il backup per aggiungere un nuovo nodo peer. Dopo il ripristino del backup, il peer viene sincronizzato con eventuali altre modifiche apportate dopo l'esecuzione del backup. Poiché i comandi vengono rilevati nel database di distribuzione, la logica di sincronizzazione può esaminare l'ultimo LSN di cui è stato eseguito il backup e usarlo come punto di partenza, sapendo che il comando è disponibile se il backup è stato eseguito entro il periodo di conservazione massimo. Il valore predefinito per il periodo di conservazione minimo è 0 ore e il periodo massimo di conservazione è 24 ore.

Quando la sincronizzazione immediata è disattivata, le modifiche vengono mantenute almeno il periodo di conservazione minimo e ripulite 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 [AdventureWorks2022]
EXEC sp_changepublication 
  @publication = @publication, 
  @property = N'replicate_ddl', 
  @value = 0
GO

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_changepublication.

Vedi anche

Visualizzare e modificare le proprietà della pubblicazione
Modificare le proprietà di pubblicazioni e articoli
sp_addpublication (Transact-SQL)
sp_droppublication (Transact-SQL)
sp_helppublication (Transact-SQL)
Stored procedure di replica (Transact-SQL)