Condividi tramite


sp_addpublication (Transact-SQL)

Crea una pubblicazione snapshot o transazionale. 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_addpublication [ @publication = ] 'publication'
    [ , [ @taskid = ] tasked ]
    [ , [ @restricted = ] 'restricted' ]
    [ , [ @sync_method = ] 'sync_method' ]
    [ , [ @repl_freq = ] 'repl_freq' ]
    [ , [ @description = ] 'description' ]
    [ , [ @status = ] 'status' ]
    [ , [ @independent_agent = ] 'independent_agent' ]
    [ , [ @immediate_sync = ] 'immediate_sync' ]
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ]
    [ , [ @allow_push = ] 'allow_push'
    [ , [ @allow_pull = ] 'allow_pull' ]
    [ , [ @allow_anonymous = ] 'allow_anonymous' ]
    [ , [ @allow_sync_tran = ] 'allow_sync_tran' ]
    [ , [ @autogen_sync_procs = ] 'autogen_sync_procs' ]
    [ , [ @retention = ] retention ]
    [ , [ @allow_queued_tran= ] 'allow_queued_updating' ]
    [ , [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder' ]
    [ , [ @alt_snapshot_folder= ] 'alternate_snapshot_folder' ]
    [ , [ @pre_snapshot_script= ] 'pre_snapshot_script' ]
    [ , [ @post_snapshot_script= ] 'post_snapshot_script' ]
    [ , [ @compress_snapshot= ] 'compress_snapshot' ]
    [ , [ @ftp_address = ] 'ftp_address' ]
    [ , [ @ftp_port= ] ftp_port ]
    [ , [ @ftp_subdirectory = ] 'ftp_subdirectory' ]
    [ , [ @ftp_login = ] 'ftp_login' ]
    [ , [ @ftp_password = ] 'ftp_password' ]
    [ , [ @allow_dts = ] 'allow_dts' ]
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ]
    [ , [ @conflict_policy = ] 'conflict_policy' ]
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @queue_type = ] 'queue_type' ]
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ]
    [ , [ @logreader_job_name = ] 'logreader_agent_name' ]
    [ , [ @qreader_job_name = ] 'queue_reader_agent_name' ]
    [ , [ @publisher = ] 'publisher' ] 
    [ , [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @enabled_for_p2p = ] 'enabled_for_p2p' ]
    [ , [ @publish_local_changes_only = ] 'publish_local_changes_only' ]
    [ , [ @enabled_for_het_sub = ] 'enabled_for_het_sub' ]
    [ , [ @p2p_conflictdetection = ] 'p2p_conflictdetection' ]
    [ , [ @p2p_originator_id = ] p2p_originator_id
    [ , [ @p2p_continue_onconflict = ] 'p2p_continue_onconflict'
    [ , [ @allow_partition_switch = ] 'allow_partition_switch'
    [ , [ @replicate_partition_switch = ]'replicate_partition_switch'

Argomenti

  • [ @publication=] 'publication'
    Nome della pubblicazione da creare. publication è di tipo sysname e non prevede alcun valore predefinito. Il nome deve essere univoco all'interno del database.

  • [ @taskid=] taskid
    Supportato solo per compatibilità con le versioni precedenti. Utilizzare sp_addpublication_snapshot (Transact-SQL).

  • [ @restricted=] 'restricted'
    Supportato solo per compatibilità con le versioni precedenti. Utilizzare default_access.

  • [ @sync_method=] 'sync_method**'**
    Modalità di sincronizzazione. sync_method è di tipo nvarchar(13). I valori possibili sono i seguenti.

    Valore

    Descrizione

    native

    Genera l'output del programma per la copia bulk in modalità nativa per tutte le tabelle. Questo valore non è supportato per server di pubblicazione Oracle.

    character

    Genera l'output del programma per la copia bulk in modalità carattere per tutte le tabelle. Per un server di pubblicazione Oracle il valore character è valido solo per la replica snapshot.

    concurrent

    Genera l'output del programma per la copia bulk in modalità nativa per tutte le tabelle, senza tuttavia bloccare le tabelle durante lo snapshot. Questo valore è supportato solo per pubblicazioni transazionali. Questo valore non è supportato per server di pubblicazione Oracle.

    concurrent_c

    Genera l'output del programma per la copia bulk in modalità carattere per tutte le tabelle, senza tuttavia bloccare le tabelle durante lo snapshot. Questo valore è supportato solo per pubblicazioni transazionali.

    database snapshot

    Genera output del programma in modalità nativa per la copia bulk di tutte le tabelle da uno snapshot del database. Gli snapshot del database non sono disponibili in tutte le edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2012.

    database snapshot character

    Genera output del programma in modalità carattere per la copia bulk di tutte le tabelle da uno snapshot del database. Gli snapshot del database non sono disponibili in tutte le edizioni di Microsoft SQL Server. Per un elenco delle funzionalità supportate dalle edizioni di SQL Server, vedere Funzionalità supportate dalle edizioni di SQL Server 2012.

    NULL (predefinito)

    Per i server di pubblicazione Microsoft SQL Server l'impostazione predefinita è native. Per i server di pubblicazione non SQL Server l'impostazione predefinita è character quando il valore di repl_freq è snapshot e concurrent_c in tutti gli altri casi.

  • [ @repl_freq=] 'repl_freq'
    Tipo di frequenza della replica. repl_freq è di tipo nvarchar(10). I possibili valori sono i seguenti.

    Valore

    Descrizione

    continuous (predefinito)

    Il server di pubblicazione genera l'output per tutte le transazioni basate su log. Per server di pubblicazione non SQL Server è necessario che sync_method sia impostato su concurrent_c.

    snapshot

    Il server di pubblicazione genera solo gli eventi di sincronizzazione pianificati. Per server di pubblicazione non SQL Server è necessario che sync_method sia impostato su character.

  • [ @description=] 'description'
    Descrizione facoltativa della pubblicazione. description è di tipo nvarchar(255) e il valore predefinito è NULL.

  • [ @status=] 'status'
    Specifica se i dati della pubblicazione sono disponibili. status è di tipo nvarchar(8). I valori possibili sono i seguenti.

    Valore

    Descrizione

    active

    I dati della pubblicazione risultano immediatamente disponibili per i Sottoscrittori.

    inactive (predefinito)

    I dati della pubblicazione non sono disponibili per i Sottoscrittori quando viene creata la pubblicazione (è possibile creare una sottoscrizione, che tuttavia non viene elaborata).

    Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @independent_agent=] 'independent_agent'
    Specifica se per la pubblicazione è disponibile un agente di distribuzione autonomo. independent_agent è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è true, per la pubblicazione è disponibile un agente di distribuzione autonomo. Se è false, per la pubblicazione viene utilizzato un agente di distribuzione condiviso e a ogni coppia database del server di pubblicazione/database del Sottoscrittore è associato un solo agente condiviso.

  • [ @immediate_sync=] 'immediate_synchronization'
    Specifica se i file di sincronizzazione della pubblicazione vengono creati a ogni esecuzione dell'agente snapshot. immediate_synchronization è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è true, i file di sincronizzazione vengono creati o ricreati a ogni esecuzione dell'agente snapshot. Se l'esecuzione dell'agente snapshot viene completata prima della creazione della sottoscrizione, i Sottoscrittori possono ricevere i file di sincronizzazione immediatamente. Le nuove sottoscrizioni ricevono i file di sottoscrizione più recenti generati dall'ultima esecuzione dell'agente snapshot. Il valore di independent_agent deve essere true affinché il valore di immediate_synchronization sia true. Se è false, i file di sincronizzazione vengono creati solo se esistono nuove sottoscrizioni. È necessario chiamare la stored procedure sp_addsubscription per ogni sottoscrizione quando si aggiunge un nuovo articolo a una pubblicazione esistente in modo incrementale. I Sottoscrittori ricevono i file di sincronizzazione dopo la sottoscrizione solo se gli agenti snapshot sono stati avviati e completati.

  • [ @enabled_for_internet=] 'enabled_for_internet'
    Specifica se la pubblicazione è abilitata per Internet e determina se è possibile utilizzare FTP per il trasferimento dei file di snapshot in un Sottoscrittore. enabled_for_internet è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è true, i file di sincronizzazione della pubblicazione vengono inseriti nella directory C:\Programmi\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp. La directory Ftp deve essere creata dall'utente.

  • [ @allow_push=] 'allow_push'
    Specifica se è consentito creare sottoscrizioni push per la pubblicazione specificata. allow_push è di tipo nvarchar(5) e il valore predefinito è TRUE, che consente la creazione di sottoscrizioni push nella pubblicazione.

  • [ @allow_pull=] 'allow_pull'
    Specifica se è consentito creare sottoscrizioni pull per la pubblicazione specificata. allow_pull è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è false, non è consentito creare sottoscrizioni pull per la pubblicazione.

  • [ @allow_anonymous=] 'allow_anonymous'
    Specifica se è consentito creare sottoscrizioni anonime per la pubblicazione specificata. allow_anonymous è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è true, è necessario impostare su true anche immediate_synchronization. Se è false, non è consentito creare sottoscrizioni anonime per la pubblicazione.

  • [ @allow_sync_tran=] 'allow_sync_tran'
    Specifica se le sottoscrizioni ad aggiornamento immediato sono consentite nella pubblicazione. allow_sync_tran è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true non è supportato per server di pubblicazione Oracle.

  • [ @autogen_sync_procs=] 'autogen_sync_procs'
    Specifica se la stored procedure di sincronizzazione per sottoscrizioni aggiornabili viene generata nel server di pubblicazione. autogen_sync_procs è di tipo nvarchar(5). I valori possibili sono i seguenti.

    Valore

    Descrizione

    true

    Questo valore viene impostato automaticamente quando sono abilitate le sottoscrizioni aggiornabili.

    false

    Questo valore viene impostato automaticamente quando non sono abilitate le sottoscrizioni aggiornabili oppure per server di pubblicazione Oracle.

    NULL (predefinito)

    L'impostazione predefinita è true quando sono abilitate le sottoscrizioni aggiornabili e false quando non sono abilitate le sottoscrizioni aggiornabili.

    [!NOTA]

    Il valore specificato dall'utente per autogen_sync_procsviene ignorato in base ai valori specificati per allow_queued_tran e allow_sync_tran.

  • [ @retention=] retention
    Periodo di memorizzazione, espresso in ore, per le attività di sottoscrizione. retention è di tipo int e il valore predefinito è 336 ore. Se una sottoscrizione non viene attivata entro il periodo di memorizzazione, scade e viene rimossa. Il valore di questo parametro può essere maggiore del periodo di memorizzazione massimo del database di distribuzione utilizzato dal server di pubblicazione. Se è 0, le sottoscrizioni note della pubblicazione non scadono mai e non vengono rimosse dall'agente di pulizia delle sottoscrizioni scadute.

  • [ @allow_queued_tran= ] 'allow_queued_updating'
    Abilita o disabilita l'accodamento delle modifiche nel Sottoscrittore fino a quando non è possibile applicarle nel server di pubblicazione. allow_queued_updating è di tipo nvarchar(5) e il valore predefinito è FALSE. Se è false, le modifiche apportate nel Sottoscrittore non vengono inserite in coda. Il valore true non è supportato per server di pubblicazione Oracle.

  • [ @snapshot_in_defaultfolder= ] 'snapshot_in_default_folder'
    Specifica se i file di snapshot sono archiviati nella cartella predefinita. snapshot_in_default_folder è di tipo nvarchar(5) e il valore predefinito è TRUE. Se è true, i file di snapshot sono disponibili nella cartella predefinita. Se è false, i file di snapshot sono archiviati nella posizione alternativa specificata in alternate_snapshot_folder. Le posizioni alternative possono essere un altro server, un'unità di rete oppure un supporto rimovibile, ad esempio un CD o un disco rimovibile. È inoltre possibile archiviare i file di snapshot in un sito FTP in modo che possano essere successivamente recuperati dal Sottoscrittore. Si noti che questo parametro può essere true anche quando è stata specificata una posizione nel parametro @alt_snapshot_folder. Tale combinazione indica che i file di snapshot vengono archiviati sia nella posizione predefinita che in quella alternativa.

  • [ @alt_snapshot_folder= ] 'alternate_snapshot_folder'
    Specifica la posizione della cartella alternativa per lo snapshot. alternate_snapshot_folder è di tipo nvarchar(255) e il valore predefinito è NULL.

  • [ @pre_snapshot_script= ] 'pre_snapshot_script'
    Specifica un puntatore al percorso di un file con estensione sql. pre_snapshot_script è di tipo nvarchar(255), e il valore predefinito è NULL. L'agente di distribuzione esegue lo script pre-snapshot prima dell'esecuzione di tutti gli script di oggetti replicati durante l'applicazione di uno snapshot in un Sottoscrittore. Lo script viene eseguito nel contesto di sicurezza utilizzato dall'agente di distribuzione per la connessione al database di sottoscrizione.

  • [ @post_snapshot_script= ] 'post_snapshot_script'
    Specifica un puntatore al percorso di un file con estensione sql. post_snapshot_script è di tipo nvarchar(255) e il valore predefinito è NULL. L'agente di distribuzione esegue lo script post-snapshot dopo l'applicazione di tutti gli altri dati e script di oggetti replicati durante una sincronizzazione iniziale. Lo script viene eseguito nel contesto di sicurezza utilizzato dall'agente di distribuzione per la connessione al database di sottoscrizione.

  • [ @compress_snapshot= ] 'compress_snapshot'
    Specifica che lo snapshot scritto nella posizione indicata da @alt_snapshot_folder deve essere compresso nel formato Microsoft CAB. compress_snapshot è di tipo nvarchar(5) e il valore predefinito è FALSE. false indica che lo snapshot non verrà compresso, mentre il valore true indica che lo snapshot verrà compresso. I file di snapshot con una dimensione superiore a 2 gigabyte (GB) non possono essere compressi. I file di snapshot compressi vengono decompressi nella posizione in cui viene eseguito l'agente di distribuzione. Per le sottoscrizioni pull in genere vengono utilizzati snapshot compressi in modo che i file vengano decompressi nel Sottoscrittore. Non è possibile comprimere lo snapshot nella cartella predefinita.

  • [ @ftp_address = ] 'ftp_address'
    Indirizzo di rete del servizio FTP per il server di distribuzione. ftp_address è di tipo sysname e il valore predefinito è NULL. Specifica la posizione in cui i file di snapshot della pubblicazione possono essere prelevati dall'agente di distribuzione o di merge di un Sottoscrittore. Dato che questa proprietà viene archiviata per ogni pubblicazione, a ogni pubblicazione può essere associato un valore ftp_address diverso. La pubblicazione deve supportare la propagazione di snapshot tramite FTP.

  • [ @ftp_port= ] ftp_port
    Numero di porta del servizio FTP per il server di distribuzione. ftp_port è di tipo int e il valore predefinito è 21. Specifica la posizione dei file di snapshot della pubblicazione, dove i file possono essere prelevati dall'agente di distribuzione o di merge di un Sottoscrittore. Dato che questa proprietà viene archiviata per ogni pubblicazione, a ogni pubblicazione può essere associato un valore ftp_port diverso.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Specifica la posizione in cui i file di snapshot possono essere prelevati dall'agente di distribuzione o di merge di un Sottoscrittore se la pubblicazione supporta la propagazione degli snapshot tramite FTP. ftp_subdirectory è di tipo nvarchar(255) e il valore predefinito è NULL. Poiché questa proprietà viene archiviata per ogni pubblicazione, a ogni pubblicazione può essere associato un valore di ftp_subdirctory diverso. È anche possibile specificare il valore NULL se non si desidera utilizzare una sottodirectory.

  • [ @ftp_login = ] 'ftp_login'
    Nome utente utilizzato per la connessione al servizio FTP. ftp_login è di tipo sysname e il valore predefinito è ANONYMOUS.

  • [ @ftp_password = ] 'ftp_password'
    Password utente utilizzata per la connessione al servizio FTP. ftp_password è di tipo sysname e il valore predefinito è NULL.

  • [ @allow_dts = ] 'allow_dts'
    Specifica che la pubblicazione supporta le trasformazioni di dati. Quando si crea una sottoscrizione, è possibile specificare un pacchetto DTS. allow_transformable_subscriptions è di tipo nvarchar(5) e il valore predefinito è FALSE, che non consente trasformazioni DTS. Quando allow_dts è impostato su true, sync_method deve essere impostato su character o concurrent_c.

    Il valore true non è supportato per server di pubblicazione Oracle.

  • [ @allow_subscription_copy = ] 'allow_subscription_copy'
    Abilita o disabilita la funzione di copia dei database di sottoscrizione che sottoscrivono la pubblicazione. allow_subscription_copy è di tipo nvarchar(5) e il valore predefinito è FALSE.

  • [ @conflict_policy = ] 'conflict_policy'
    Specifica i criteri di risoluzione dei conflitti adottati quando viene utilizzata l'opzione per Sottoscrittori ad aggiornamento in coda. conflict_policy è di tipo nvarchar(100) e il valore predefinito è NULL. I valori possibili sono i seguenti.

    Valore

    Descrizione

    pub wins

    Prevale il server di pubblicazione.

    sub reinit

    La sottoscrizione viene reinizializzata.

    sub wins

    Prevale il Sottoscrittore.

    NULL (predefinito)

    Se è NULL e la pubblicazione è di tipo snapshot, i criteri di risoluzione dei conflitti predefiniti sono sub reinit. Se è NULL e la pubblicazione non è di tipo snapshot, il criterio di risoluzione dei conflitti predefinito è pub wins.

    Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @centralized_conflicts = ] 'centralized_conflicts'
    Specifica se i record dei conflitti vengono archiviati nel server di pubblicazione. centralized_conflicts è di tipo nvarchar(5) e il valore predefinito è TRUE. Se è true, i record dei conflitti vengono archiviati nel server di pubblicazione. Se è false, i record dei conflitti vengono archiviati sia nel server di pubblicazione che nel Sottoscrittore che ha causato il conflitto. Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @conflict_retention = ] conflict_retention
    Specifica il periodo di memorizzazione dei conflitti, espresso in giorni. Si tratta del periodo di tempo durante il quale i metadati dei conflitti rimangono archiviati per la replica transazionale peer-to-peer e le sottoscrizioni ad aggiornamento in coda. conflict_retention è di tipo int e il valore predefinito è 14. Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @queue_type = ] 'queue_type'
    Specifica il tipo di coda da utilizzare. queue_type è di tipo nvarchar(10) e il valore predefinito è NULL. I valori possibili sono i seguenti.

    Valore

    Descrizione

    sql

    Consente di utilizzare SQL Server per l'archiviazione delle transazioni.

    NULL (predefinito)

    L'impostazione predefinita è sql, che consente di utilizzare SQL Server per l'archiviazione delle transazioni.

    [!NOTA]

    L'utilizzo di MSMQ (Microsoft Message Queuing) non è più supportato. Se si specifica il valore msmq, verrà visualizzato un messaggio di avviso e verrà impostato automaticamente il valore sql.

    Questo parametro non è supportato per server di pubblicazione Oracle.

  • [ @add_to_active_directory = ] 'add_to_active_directory'
    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.

  • [ @logreader_job_name = ] 'logreader_agent_name'
    Nome di un processo esistente dell'agente. logreader_agent_name è di tipo sysname e il valore predefinito è NULL. Questo parametro viene specificato solo quando l'agente di lettura log utilizzerà un processo esistente anziché uno nuovo.

  • [ @qreader_job_name = ] 'queue_reader_agent_name'
    Nome di un processo esistente dell'agente. queue_reader_agent_name è di tipo sysname e il valore predefinito è NULL. Questo parametro viene specificato solo quando l'agente di lettura coda utilizzerà un processo esistente anziché uno nuovo.

  • [ @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 aggiunge una pubblicazione in un server di pubblicazione SQL Server.

  • [ @allow_initialize_from_backup = ] 'allow_initialize_from_backup'
    Specifica se i Sottoscrittori possono inizializzare una sottoscrizione di questa pubblicazione da un backup anziché da uno snapshot iniziale. allow_initialize_from_backup è di tipo nvarchar(5). I valori possibili sono i seguenti:

    Valore

    Descrizione

    true

    Abilita l'inizializzazione da un backup.

    false

    Disabilita l'inizializzazione da un backup.

    NULL (predefinito)

    L'impostazione predefinita è true per pubblicazioni in una topologia di replica peer-to-peer e false per tutte le altre pubblicazioni.

    Per ulteriori informazioni, vedere Inizializzazione di una sottoscrizione transazionale senza uno snapshot.

    Nota di attenzioneAttenzione

    Per evitare la mancanza di dati del Sottoscrittore, quando si utilizza sp_addpublication con @allow_initialize_from_backup = N'true', utilizzare sempre @immediate_sync = N'true'.

  • [ @replicate_ddl = ] replicate_ddl
    Specifica se la replica dello schema è supportata per la pubblicazione. replicate_ddl è di tipo int e il valore predefinito è 1 per i server di pubblicazione SQL Server e 0 per i server di pubblicazione non SQL Server. Il valore 1 indica che le istruzioni DDL (Data Definition Language) eseguite nel server di pubblicazione vengono replicate, mentre il valore 0 indica che le istruzioni DDL non vengono replicate. La replica dello schema non è supportata per server di pubblicazione Oracle. Per ulteriori informazioni, vedere Modifiche allo schema nei database di pubblicazione.

    Il parametro @replicate\_ddl viene rispettato quando un'istruzione DDL aggiunge una colonna. Il parametro @replicate\_ddl viene ignorato quando un'istruzione DDL modifica o rilascia una colonna per i motivi seguenti.

    • Quando viene rilasciata una colonna, è necessario aggiornare sysarticlecolumns per evitare l'inclusione della colonna eliminata da parte delle nuove istruzioni DML che determinerebbe la mancata esecuzione dell'agente di distribuzione. Il parametro @replicate\_ddl viene ignorato perché la replica deve replicare sempre la modifica dello schema.

    • Quando una colonna viene modificata, è probabile che venga modificato il tipo di dati di origine o il supporto dei valori Null, di conseguenza le istruzioni DML contengono un valore che potrebbe non essere compatibile con la tabella nel Sottoscrittore. Tali istruzioni DML potrebbero determinare la mancata esecuzione dell'agente di distribuzione. Il parametro @replicate\_ddl viene ignorato perché la replica deve replicare sempre la modifica dello schema.

    • Quando un'istruzione DDL aggiunge una nuova colonna, sysarticlecolumns non include la nuova colonna. Le istruzioni DML non tenteranno di replicare i dati per la nuova colonna. Il parametro viene rispettato perché la replica o la non replica di DDL è accettabile.

  • [ @enabled_for_p2p = ] 'enabled_for_p2p'
    Consente di utilizzare la pubblicazione in una topologia di replica peer-to-peer. enabled_for_p2p è di tipo nvarchar(5) e il valore predefinito è FALSE. true indica che la pubblicazione supporta la replica peer-to-peer. Quando si imposta enabled_for_p2p su true, è necessario rispettare i requisiti seguenti:

    • Il parametro allow_anonymous deve essere impostato su false.

    • Il parametro allow_dts deve essere impostato su false.

    • Il parametro allow_initialize_from_backup deve essere impostato su true.

    • Il parametro allow_queued_tran deve essere impostato su false.

    • Il parametro allow_sync_tran deve essere impostato su false.

    • Il parametro conflict_policy 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.

    Per ulteriori informazioni, vedere Replica transazionale peer-to-peer.

  • [ @publish_local_changes_only = ] 'publish_local_changes_only'
    Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

  • [ @enabled_for_het_sub= ] 'enabled_for_het_sub'
    Abilita il supporto dei Sottoscrittori non SQL Server nella pubblicazione. enabled_for_het_sub è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true indica che la pubblicazione supporta Sottoscrittori non SQL Server. Quando si imposta enabled_for_het_sub su true, è necessario rispettare i requisiti seguenti:

    • Il parametro allow_initialize_from_backup deve essere impostato su false.

    • Il parametro allow_push deve essere impostato su true.

    • Il parametro allow_queued_tran deve essere impostato su false.

    • Il parametro allow_subscription_copy deve essere impostato su false.

    • Il parametro allow_sync_tran deve essere impostato su false.

    • Il parametro autogen_sync_procs deve essere impostato su false.

    • Il parametro conflict_policy deve essere impostato su NULL.

    • Il parametro enabled_for_internet deve essere impostato su false.

    • Il parametro enabled_for_p2p deve essere impostato su false.

    • Il parametro ftp_address deve essere impostato su NULL.

    • Il parametro ftp_subdirectory deve essere impostato su NULL.

    • Il parametro ftp_password deve essere impostato su NULL.

    • Il parametro pre_snapshot_script deve essere impostato su NULL.

    • Il parametro post_snapshot_script deve essere impostato su NULL.

    • Il parametro replicate_ddl deve essere impostato su 0.

    • Il parametro qreader_job_name deve essere impostato su NULL.

    • Il parametro queue_type deve essere impostato su NULL.

    • Il parametro sync_method non deve essere impostato su native o concurrent.

    Per ulteriori informazioni, vedere Sottoscrittori non SQL Server.

  • [ @p2p_conflictdetection= ] 'p2p_conflictdetection'
    Consente il rilevamento dei conflitti da parte dell'agente di distribuzione se la pubblicazione è abilitata per la replica peer-to-peer. p2p_conflictdetection è nvarchar(5) e il valore predefinito è TRUE. Per ulteriori informazioni, vedere Rilevamento dei conflitti nella replica peer-to-peer.

  • [ @p2p_originator_id= ] p2p_originator_id
    Specifica un ID per un nodo in una topologia peer-to-peer. p2p_originator_id è di tipo int e il valore predefinito è NULL. Questo ID viene utilizzato per il rilevamento dei conflitti se p2p_conflictdetection è impostato su TRUE. Specificare un ID positivo diverso da zero che non sia mai stato utilizzato nella topologia. Per un elenco di ID che sono già stati utilizzati, eseguire sp_help_peerconflictdetection.

  • [ @p2p_continue_onconflict= ] 'p2p_continue_onconflict'
    Determina se l'agente di distribuzione continua a elaborare le modifiche dopo che è stato rilevato un conflitto. p2p_continue_onconflict è di tipo nvarchar(5) e il valore predefinito è FALSE.

    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.

  • [ @allow_partition_switch= ] 'allow_partition_switch'
    Specifica se le istruzioni ALTER TABLE...SWITCH possono essere eseguite sul database pubblicato. allow_partition_switch è di tipo nvarchar(5) e il valore predefinito è FALSE. Per ulteriori informazioni, vedere Replica di tabelle e indici partizionati.

  • [ @replicate_partition_switch= ] 'replicate_partition_switch'
    Specifica se le istruzioni ALTER TABLE...SWITCH eseguite sul database pubblicato devono essere replicate ai Sottoscrittori. replicate_partition_switch è di tipo nvarchar(5) e il valore predefinito è FALSE. Questa opzione è valida solo se allow_partition_switch è impostato su TRUE.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

sp_addpublication viene utilizzata per la replica snapshot e transazionale.

Se esistono più pubblicazioni dello stesso oggetto di database, le istruzioni ALTER TABLE, ALTER VIEW, ALTER PROCEDURE, ALTER FUNCTION e ALTER TRIGGER DDL verranno replicate solo per le pubblicazioni con il parametro replicate_ddl impostato su 1. L'istruzione ALTER TABLE DROP COLUMN DDL, tuttavia, verrà replicata per tutte le pubblicazioni che pubblicano la colonna eliminata.

Quando per una pubblicazione è abilitata la replica DDL (replicate_ddl = 1), per apportare alla pubblicazione modifiche DDL da non replicare, è necessario prima eseguire sp_changepublication per impostare replicate_ddl su 0. Dopo l'esecuzione delle istruzioni DDL non di replica, è possibile eseguire nuovamente sp_changepublication per riattivare la replica DDL.

Esempio

-- To avoid storing the login and password in the script file, the values 
-- are passed into SQLCMD as scripting variables. For information about 
-- how to use scripting variables on the command line and in SQL Server
-- Management Studio, see the "Executing Replication Scripts" section in
-- the topic "Programming Replication Using System Stored Procedures".

DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks'; 
SET @publication = N'AdvWorksProductTran'; 
-- Windows account used to run the Log Reader and Snapshot Agents.
SET @login = $(Login); 
-- This should be passed at runtime.
SET @password = $(Password); 

-- Enable transactional or snapshot replication on the publication database.
EXEC sp_replicationdboption 
    @dbname=@publicationDB, 
    @optname=N'publish',
    @value = N'true';

-- Execute sp_addlogreader_agent to create the agent job. 
EXEC sp_addlogreader_agent 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;

-- Create a new transactional publication with the required properties. 
EXEC sp_addpublication 
    @publication = @publication, 
    @status = N'active',
    @allow_push = N'true',
    @allow_pull = N'true',
    @independent_agent = N'true';

-- Create a new snapshot job for the publication, using a default schedule.
EXEC sp_addpublication_snapshot 
    @publication = @publication, 
    @job_login = @login, 
    @job_password = @password,
    -- Explicitly specify the use of Windows Integrated Authentication (default) 
    -- when connecting to the Publisher.
    @publisher_security_mode = 1;
GO

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_addpublication. Gli account di accesso con autenticazione di Windows devono disporre di un account utente nel database che rappresenta il proprio account utente di Windows. Un account utente che rappresenta un gruppo di Windows non è sufficiente.

Vedere anche

Riferimento

sp_addlogreader_agent (Transact-SQL)

sp_addpublication_snapshot (Transact-SQL)

sp_changepublication (Transact-SQL)

sp_droppublication (Transact-SQL)

sp_helppublication (Transact-SQL)

sp_replicationdboption (Transact-SQL)

Stored procedure per la replica (Transact-SQL)

Concetti

Pubblicazione di dati e oggetti di database