sp_addpublication (Transact-SQL)
Crea una pubblicazione snapshot o transazionale. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
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 possibili valori 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. Per questa opzione è necessario disporre di SQL Server Enterprise.
database snapshot character
Genera output del programma in modalità carattere per la copia bulk di tutte le tabelle da uno snapshot del database. Per questa opzione è necessario disporre di SQL Server Enterprise.
NULL (predefinito)
Per server di pubblicazione Microsoft SQL Server l'impostazione predefinita è native. Per 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 possibili valori 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. Affinché immediate_synchronization possa essere true, è necessario che independent_agent sia impostato su 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 a 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 truenon è 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 possibili valori sono i seguenti.Valore
Descrizione
true
Questo valore viene impostato automaticamente quando sono attivate le sottoscrizioni aggiornabili.
false
Questo valore viene impostato automaticamente quando non sono attivate le sottoscrizioni aggiornabili oppure per server di pubblicazione Oracle.
NULL (predefinito)
L'impostazione predefinita è true quando sono attivate le sottoscrizioni aggiornabili e false quando non sono attivate 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 per l'eliminazione di sottoscrizioni scadute.[ @allow_queued_tran= ] 'allow_queued_updating'
Attiva 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 archiviato nella posizione @alt_snapshot_folder deve essere compresso nel formato Microsoft CAB. compress_snapshot è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore 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 dei file di snapshot, dove i file possono essere prelevati dall'agente di distribuzione o di merge del Sottoscrittore se la pubblicazione supporta la propagazione di 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 funzionalità che consente di copiare i 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 possibili valori 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 possibili valori 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 possibili valori sono i seguenti.Valore
Descrizione
true
Attiva 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.
[ @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 o 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 applicato quando viene aggiunta una colonna tramite un'istruzione DDL. Il parametro @replicate_ddl viene ignorato quando una colonna viene modificata o eliminata da un'istruzione DDL per i motivi riportati di seguito.
Quando una colonna viene eliminata, è necessario aggiornare sysarticlecolumns per evitare che la colonna eliminata venga inclusa dalle nuove istruzioni DML, interrompendo quindi l'attività dell'agente di distribuzione. Il parametro @replicate_ddl viene ignorato poiché tramite la replica deve essere sempre replicata la modifica dello schema.
Quando una colonna viene modificata, potrebbe venir cambiato anche il tipo di dati di origine o l'utilizzo di valori Null, pertanto nelle istruzioni DML è contenuto un valore che potrebbe non essere compatibile con la tabella del Sottoscrittore. Con queste istruzioni DML, l'attività dell'agente di distribuzione potrebbe essere interrotta. Il parametro @replicate_ddl viene ignorato poiché tramite la replica deve essere sempre replicata la modifica dello schema.
Una nuova colonna aggiunta tramite un'istruzione DDL non viene inclusa in sysarticlecolumns. Non verrà effettuato il tentativo di replica dei dati per la nuova colonna mediante le istruzioni DML. Il parametro viene applicato poiché è consentita sia la replica di DDL sia la non esecuzione di questa operazione.
[ @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. Il valore 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'
Attiva 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 è di tipo 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 il rilevamento di un conflitto. p2p_continue_onconflict è di tipo nvarchar(5) e il valore predefinito è FALSE.Attenzione È 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'AdventureWorks2008R2';
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.
Vedere anche