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.

Icona di collegamento a un argomentoConvenzioni 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

    Disattiva 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

    Criterio 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

    Criterio 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

    La pubblicazione supporta Sottoscrittori non SQL Server. 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. È necessario che anche la proprietà independent_agent sia impostata su true.

     

    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.

    Nota di attenzioneAttenzione
    È 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 interrompe 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 è obsoleto 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.

    NotaNota
    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 disattivata 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à 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.

Esempio

DECLARE @publication AS sysname
SET @publication = N'AdvWorksProductTran' 

-- Turn off DDL replication for the transactional publication.
USE [AdventureWorks2008R2]
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.