Condividi tramite


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 relative alla sintassi Transact-SQL

Sintassi

sp_changepublication
    [ [ @publication = ] N'publication' ]
    [ , [ @property = ] N'property' ]
    [ , [ @value = ] N'value' ]
    [ , [ @force_invalidate_snapshot = ] force_invalidate_snapshot ]
    [ , [ @force_reinit_subscription = ] force_reinit_subscription ]
    [ , [ @publisher = ] N'publisher' ]
[ ; ]

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione. @publication è sysname, con il valore predefinito NULL.

[ @property = ] N'property'

Proprietà della pubblicazione da modificare. @property è nvarchar(255), con il valore predefinito NULL.

[ @value = ] N'value'

Nuovo valore della proprietà. @value è nvarchar(255), con 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 trueanche . Non è possibile modificare le pubblicazioni peer-to-peer.
false Non è possibile creare sottoscrizioni anonime per la pubblicazione specificata. Non è possibile modificare le 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. Questa proprietà non può essere modificata per le pubblicazioni non 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 true ALTER TABLE...SWITCH Le istruzioni possono essere eseguite sul database pubblicato. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
false ALTER TABLE...SWITCH Le istruzioni non possono essere eseguite sul database pubblicato.
allow_pull true È consentita la creazione di sottoscrizioni pull per la pubblicazione specificata. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
false Le sottoscrizioni pull non sono consentite per la pubblicazione specificata. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
allow_push true È consentita la creazione di sottoscrizioni push per la pubblicazione specificata.
false Le sottoscrizioni push non sono consentite per la pubblicazione specificata.
allow_subscription_copy true 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 true 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 true Lo snapshot in una cartella snapshot alternativa viene compresso nel formato di file CAB. Lo snapshot nella cartella snapshot predefinita non può essere compresso.
false Lo snapshot non è compresso, ovvero il comportamento predefinito 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 conservazione dei conflitti, espresso in giorni. L'impostazione predefinita è 14 giorni. 0 significa 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 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 sp_changepublication per rispettare i requisiti seguenti prima di impostare enabled_for_het_sub su true:
Il parametro - allow_queued_tran deve essere impostato su false.
Il parametro - allow_sync_tran deve essere impostato su false.
La modifica di enabled_for_het_sub in true potrebbe 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 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 per la pubblicazione vengono inseriti nella directory seguente: C:\Program Files\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 true La pubblicazione supporta la replica peer-to-peer. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
Per impostare su enabled_for_p2p true, si applicano le restrizioni seguenti:
- allow_anonymous deve essere false
Il parametro - allow_dts deve essere impostato su false.
- allow_initialize_from_backup deve essere true
Il parametro - allow_queued_tran deve essere impostato su false.
Il parametro - allow_sync_tran deve essere impostato su false.
Il parametro - enabled_for_het_sub deve essere impostato su false.
Il parametro - independent_agent deve essere impostato su true.
Il parametro - repl_freq deve essere impostato su continuous.
Il parametro - replicate_ddl deve essere impostato su 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 usato per connettersi al servizio FTP e il valore anonymous è consentito. 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 true I file di sincronizzazione della pubblicazione vengono creati o ricreati a ogni esecuzione dell'agente snapshot. I sottoscrittori possono ricevere i file di sincronizzazione immediatamente dopo la sottoscrizione, se il agente di snapshot viene completato una volta prima della 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, vedere Effetto della sincronizzazione immediata.
false I file di sincronizzazione vengono creati solo se esistono nuove sottoscrizioni. I sottoscrittori non possono ricevere i file di sincronizzazione dopo l'avvio della sottoscrizione fino all'avvio e al completamento della agente di snapshot.
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 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 altre informazioni, vedere "Gestione dei conflitti" in Peer-to-Peer - 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 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 che tutti gli altri script e dati oggetto replicati vengano applicati durante una sincronizzazione iniziale.
publish_to_ActiveDirectory true Questo parametro è deprecato ed è supportato solo per la compatibilità con le versioni precedenti degli script. 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 per msmq @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. 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 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. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server.
0 Le istruzioni DDL non vengono replicate. Questa proprietà non può essere modificata per le pubblicazioni non SQL Server. La replica delle modifiche dello schema non può essere disabilitata quando si usa la replica peer-to-peer.
replicate_partition_switch true ALTER TABLE...SWITCH Le istruzioni eseguite sul database pubblicato devono essere replicate nei Sottoscrittori. Questa opzione è valida solo se allow_partition_switch è impostata su true. Per altre informazioni, vedere Replicare tabelle e indici partizionati.
false ALTER TABLE...SWITCH Le istruzioni non devono essere replicate nei Sottoscrittori.
retention int che rappresenta il periodo di conservazione, espresso in ore, per l'attività della sottoscrizione. Se una sottoscrizione non è attiva entro il periodo di conservazione, viene rimossa.
snapshot_in_defaultfolder true I file di snapshot sono memorizzati nella cartella snapshot predefinita. Se alt_snapshot_folder viene specificato anche , i file di snapshot vengono archiviati sia nei percorsi predefiniti che in percorsi alternativi.
false I file 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.
concurrent Usa l'output del programma di copia bulk in modalità nativa di tutte le tabelle, ma non blocca le tabelle durante il processo di generazione degli snapshot. Questa proprietà non è valida per la replica snapshot.
concurrent_c Usa l'output del programma di copia bulk in modalità carattere di tutte le tabelle, ma non blocca 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 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. Per altre informazioni, vedere Kb 3170123
false (predefinito) Disabilita il DROP TABLE supporto delle DLL per gli articoli che fanno parte della replica transazionale.
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 è bit, con il valore predefinito 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.

Vedere la sezione Osservazioni per le proprietà che, quando modificate, richiedono la generazione di un nuovo snapshot.

[ @force_reinit_subscription = ] force_reinit_subscription

Segnala che l'azione eseguita dalla stored procedure potrebbe richiedere la reinizializzazione delle sottoscrizioni esistenti. @force_reinit_subscription è bit, con un valore predefinito .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 = ] N'publisher'

Specifica un server di pubblicazione non SQL Server. @publisher è sysname, con un valore predefinito .NULL

@publisher non deve essere usato 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 per 1 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 di pubblicazione in Active Directory usando il publish_to_active_directory parametro , è necessario creare l'oggetto SQL Server in Active Directory.

Effetto 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 di conservazione massimo è di 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 conservazione predefinito, è probabile che le modifiche necessarie dopo l'esecuzione del backup siano state pulite 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.

Esempi

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.