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 true anche . 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
.