sp_changepublication (Transact-SQL)

Si applica a: sìSQL Server (tutte le versioni supportate) Sì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.

Icona di collegamento a un argomento 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 È 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 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 ALTER TABLE... Le istruzioni SWITCH possono essere eseguite sul database pubblicato. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
false ALTER TABLE... Le istruzioni SWITCH non possono essere eseguite sul database pubblicato.
allow_pull true È consentita la creazione di sottoscrizioni pull per la pubblicazione specificata. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
false Non è consentita la creazione di sottoscrizioni pull per la pubblicazione specificata. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
allow_push true È 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 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 con 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 all'interno della 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, 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 true Abilita il supporto dei Sottoscrittori non SQL Server nella pubblicazione. enabled_for_het_sub può essere modificato quando sono presenti sottoscrizioni della pubblicazione. Potrebbe essere necessario eseguire stored procedure di replica (Transact-SQL) per soddisfare 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 enabled_for_het_sub su true può modificare le impostazioni di pubblicazione esistenti. Per altre informazioni, vedere Non-SQL Server Subscribers. 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 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. 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. independent_agent deve essere true. Per altre informazioni su immediate_sync, vedere le note 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 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 usare il valore predefinito di FALSE . Quando questa opzione è impostata su , il agente di distribuzione tenta di convergere i dati nella topologia applicando la riga in conflitto dal nodo con l'ID di origine più TRUE 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 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: il supporto per Microsoft l'uso di Accodamento messaggi è stato interrotto. Se si specifica il valore msmq per value, 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 pubblicazione. 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. Non è possibile modificare questa proprietà per pubblicazioni non SQL Server.
0 Non viene eseguita la replica delle istruzioni DDL. 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 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.
detenzione int che rappresenta il periodo di conservazione, in ore, per l'attività della sottoscrizione. Se una sottoscrizione non viene attivata entro il periodo di memorizzazione, viene rimossa.
snapshot_in_defaultfolder true I file di snapshot sono memorizzati nella cartella snapshot predefinita. Se alt_snapshot_folder specificato, 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.
Stato 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 true Abilita DROP TABLE il 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: Kb 3170123
false Disabilita il DROP TABLE supporto dll per gli articoli che fanno parte della replica transazionale. Si tratta del valore predefinito per questa proprietà.
NULL (impostazione predefinita) Restituisce l'elenco di valori supportati per la proprietà.

[ @force_invalidate_snapshot = ] force_invalidate_snapshot Riconosce che l'azione eseguita da questo stored procedure può invalidare uno snapshot esistente. force_invalidate_snapshot è un bit, con un valore predefinito di 0.

  • 0 specifica che le modifiche apportate all'articolo non causano l'invalido 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 all'articolo possono causare l'invalido 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 bit con il valore predefinito 0.

  • 0 specifica che le modifiche 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 all'articolo causano la reinizializzazione della sottoscrizione esistente e concede l'autorizzazione per la reinizializzazione della sottoscrizione.

[ @publisher = ] 'publisher'Specifica un oggetto non SQL Server Publisher. publisher è sysname, con il valore predefinito NULL.

Nota

Publisher non deve essere usato quando si modificano le proprietà dell'articolo in un SQL Server Publisher.

Valori del codice restituito

0 (esito positivo) o 1 (errore)

Commenti

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 publish_to_active_directory, l'oggetto deve SQL Server essere già 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 vengono usate quando un cliente usa il backup per aggiungere un nuovo nodo peer. Dopo il ripristino del backup, il peer viene sincronizzato con qualsiasi altra modifica che si verifica dopo l'esecuzione del backup. Poiché i comandi vengono monitorati 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 di conservazione 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 db_owner predefinito del database possono eseguire sp_changepublication.

Vedere 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 per la replica (Transact-SQL)