sp_addmergepublication (Transact-SQL)

Si applica a:SQL Server Istanza gestita di SQL di Azure

Viene creata una nuova pubblicazione di tipo merge. Questa stored procedure viene eseguita nel server di pubblicazione nel database in fase di pubblicazione.

Convenzioni di sintassi Transact-SQL

Sintassi

sp_addmergepublication
    [ @publication = ] N'publication'
    [ , [ @description = ] N'description' ]
    [ , [ @retention = ] retention ]
    [ , [ @sync_mode = ] N'sync_mode' ]
    [ , [ @allow_push = ] N'allow_push' ]
    [ , [ @allow_pull = ] N'allow_pull' ]
    [ , [ @allow_anonymous = ] N'allow_anonymous' ]
    [ , [ @enabled_for_internet = ] N'enabled_for_internet' ]
    [ , [ @centralized_conflicts = ] N'centralized_conflicts' ]
    [ , [ @dynamic_filters = ] N'dynamic_filters' ]
    [ , [ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @pre_snapshot_script = ] N'pre_snapshot_script' ]
    [ , [ @post_snapshot_script = ] N'post_snapshot_script' ]
    [ , [ @compress_snapshot = ] N'compress_snapshot' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_subdirectory = ] N'ftp_subdirectory' ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @conflict_retention = ] conflict_retention ]
    [ , [ @keep_partition_changes = ] N'keep_partition_changes' ]
    [ , [ @allow_subscription_copy = ] N'allow_subscription_copy' ]
    [ , [ @allow_synctoalternate = ] N'allow_synctoalternate' ]
    [ , [ @validate_subscriber_info = ] N'validate_subscriber_info' ]
    [ , [ @add_to_active_directory = ] N'add_to_active_directory' ]
    [ , [ @max_concurrent_merge = ] max_concurrent_merge ]
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] N'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] N'publication_compatibility_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot' ]
    [ , [ @allow_web_synchronization = ] N'allow_web_synchronization' ]
    [ , [ @web_synchronization_url = ] N'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] N'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] N'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] N'conflict_logging' ]
[ ; ]

Argomenti

[ @publication = ] N'publication'

Nome della pubblicazione di tipo merge da creare. @publication è sysname, senza impostazione predefinita e non deve essere la parola chiave ALL. Il nome della pubblicazione deve essere univoco all'interno del database.

[ @description = ] N'description'

Descrizione della pubblicazione. @description è nvarchar(255), con il valore predefinito NULL.

[ @retention = ] conservazione

Periodo di conservazione, in unità del periodo di conservazione, per cui salvare le modifiche per il @publication specificato. @retention è int, con il valore predefinito 14. Le unità del periodo di conservazione sono definite da @retention_period_unit. Se la sottoscrizione non è sincronizzata entro il periodo di conservazione e le modifiche in sospeso ricevute vengono rimosse da un'operazione di pulizia nel server di distribuzione, la sottoscrizione scade e deve essere reinizializzata. Il periodo di memorizzazione massimo consentito è il periodo compreso tra la data corrente e 31 dicembre 9999.

Nota

Il periodo di memorizzazione per le pubblicazioni di tipo merge ha un periodo di prova di 24 ore per adattarsi ai Sottoscrittori dei diversi fusi orari. Se, ad esempio, si imposta un periodo di memorizzazione di un giorno, il periodo di memorizzazione effettivo sarà di 48 ore.

[ @sync_mode = ] N'sync_mode'

Modalità della sincronizzazione iniziale dei sottoscrittori alla pubblicazione. @sync_mode è nvarchar(10)e può essere uno dei valori seguenti.

Valore Descrizione
native (predefinito) Genera l'output in modalità nativa del programma per la copia bulk per tutte le tabelle.
character Genera l'output in modalità carattere del programma per la copia bulk per tutte le tabelle. Obbligatorio per supportare sottoscrittori SQL Server Compact e non SQL Server.

[ @allow_push = ] N'allow_push'

Specifica se è consentito creare sottoscrizioni push per la pubblicazione specificata. @allow_push è nvarchar(5), con un valore predefinito true, che consente sottoscrizioni push nella pubblicazione.

[ @allow_pull = ] N'allow_pull'

Specifica se è consentito creare sottoscrizioni pull per la pubblicazione specificata. @allow_pull è nvarchar(5), con un valore predefinito true, che consente sottoscrizioni pull nella pubblicazione. È necessario specificare true per supportare i Sottoscrittori di SQL Server Compact.

[ @allow_anonymous = ] N'allow_anonymous'

Specifica se è consentito creare sottoscrizioni anonime per la pubblicazione specificata. @allow_anonymous è nvarchar(5), con un valore predefinito true, che consente sottoscrizioni anonime nella pubblicazione. Per supportare i Sottoscrittori di SQL Server Compact, è necessario specificare true.

[ @enabled_for_internet = ] N'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 è nvarchar(5), con il valore predefinito false. Se true, i file di sincronizzazione per la pubblicazione vengono inseriti nella C:\Program Files\Microsoft SQL Server\MSSQL\MSSQL.x\Repldata\Ftp directory . La directory Ftp deve essere creata dall'utente. Se false, la pubblicazione non è abilitata per l'accesso a Internet.

[ @centralized_conflicts = ] N'centralized_conflicts'

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. Usare @conflict_logging per specificare il percorso in cui vengono archiviati i record in conflitto.

[ @dynamic_filters = ] N'dynamic_filters'

Consente alla pubblicazione di tipo merge di utilizzare i filtri di riga con parametri. @dynamic_filters è nvarchar(5), con il valore predefinito false.

Nota

Non è consigliabile specificare questo parametro, ma consentire a SQL Server di determinare automaticamente se vengono usati filtri di riga con parametri. Se si specifica un valore di true per @dynamic_filters, è necessario definire un filtro di riga con parametri per l'articolo. Per altre informazioni, vedere Definizione e modifica di un filtro di riga con parametri per un articolo di merge.

[ @snapshot_in_defaultfolder = ] N'snapshot_in_defaultfolder'

Viene specificato se i file di snapshot sono archiviati nella cartella predefinita. @snapshot_in_defaultfolder è nvarchar(5), con il valore predefinito true. Se true, i file di snapshot sono disponibili nella cartella predefinita. Se false, i file snapshot vengono archiviati nel percorso alternativo specificato da @alternate_snapshot_folder. Una posizione alternativa può 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 (File Transfer Protocol) in modo da poterli recuperare successivamente tramite il Sottoscrittore. Questo parametro può essere true e avere ancora una posizione specificata da @alt_snapshot_folder. Questa combinazione specifica che i file di snapshot vengono archiviati sia nei percorsi predefiniti che in percorsi alternativi.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Specifica la posizione della cartella alternativa per lo snapshot. @alt_snapshot_folder è nvarchar(255), con il valore predefinito NULL.

[ @pre_snapshot_script = ] N'pre_snapshot_script'

Specifica un puntatore a un percorso di .sql file. @pre_snapshot_script è nvarchar(255), con il valore predefinito NULL. Il agente di merge esegue lo script di pre-snapshot prima di uno degli script oggetto replicati durante l'applicazione dello snapshot in un Sottoscrittore. Lo script viene eseguito nel contesto di sicurezza utilizzato dall'agente di merge durante la connessione al database di sottoscrizione. Gli script di pre-snapshot non vengono eseguiti nei Sottoscrittori di SQL Server Compact.

[ @post_snapshot_script = ] N'post_snapshot_script'

Specifica un puntatore a un percorso di .sql file. @post_snapshot_script è nvarchar(255), con un valore predefinito .NULL L'agente di merge esegue lo script post-snapshot dopo l'applicazione di tutti gli altri script di oggetti replicati e dei dati durante una sincronizzazione iniziale. Lo script viene eseguito nel contesto di sicurezza utilizzato dall'agente di merge durante la connessione al database di sottoscrizione. Gli script di post-snapshot non vengono eseguiti nei Sottoscrittori di SQL Server Compact.

[ @compress_snapshot = ] N'compress_snapshot'

Specifica che lo snapshot scritto nel percorso di @alt_snapshot_folder verrà compresso nel formato CAB Microsoft. @compress_snapshot è nvarchar(5), con il valore predefinito false.

  • false specifica che lo snapshot non deve essere compresso.

  • true specifica che lo snapshot verrà compresso.

I file di snapshot di dimensioni superiori a 2 GB non possono essere compressi. I file di snapshot compressi vengono decompressi nella posizione dove viene eseguito l'agente di merge; in genere le sottoscrizioni pull vengono utilizzate con gli snapshot compressi in modo che i file vengono decompressi nel Sottoscrittore. Lo snapshot nella cartella predefinita non può essere compresso. Per supportare i Sottoscrittori di SQL Server Compact, è necessario specificare false.

[ @ftp_address = ] N'ftp_address'

Indirizzo di rete del servizio FTP per il server di distribuzione. @ftp_address è sysname, con un valore predefinito .NULL Specifica la posizione dei file di snapshot della pubblicazione, dove i file possono essere prelevati dall'agente di merge di un Sottoscrittore. Poiché questa proprietà è archiviata per ogni pubblicazione, ogni pubblicazione può avere un @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 è int, con il valore predefinito 21. Specifica la posizione dei file di snapshot della pubblicazione, dove i file possono essere prelevati dall'agente di merge di un Sottoscrittore. Poiché questa proprietà è archiviata per ogni pubblicazione, ogni pubblicazione può avere un proprio @ftp_port.

[ @ftp_subdirectory = ] N'ftp_subdirectory'

Specifica la posizione in cui sono disponibili i file di snapshot per il agente di merge del sottoscrittore se la pubblicazione supporta la propagazione di snapshot tramite FTP. @ftp_subdirectory è nvarchar(255), con un valore predefinito .ftp Poiché questa proprietà è archiviata per ogni pubblicazione, ogni pubblicazione può avere un proprio @ftp_subdirctory o scegliere di non avere alcuna sottodirectory, indicata con un NULL valore.

Durante la pregenerazione degli snapshot per le pubblicazioni con filtri con parametri, lo snapshot dei dati per ogni partizione del Sottoscrittore deve essere archiviato nella propria cartella. La struttura di directory per gli snapshot pregenerati tramite FTP deve rispettare la struttura seguente:

<alternate_snapshot_folder>\ftp\<publisher_publicationDB_publication>\<partitionID>.

Nota

I valori dell'esempio precedente (tra parentesi angolari) dipendono dalle specifiche della pubblicazione e della partizione del Sottoscrittore.

[ @ftp_login = ] N'ftp_login'

Nome utente utilizzato per la connessione al servizio FTP. @ftp_login è sysname, con un valore predefinito .anonymous

[ @ftp_password = ] N'ftp_password'

Password dell'utente utilizzata per la connessione al servizio FTP. @ftp_password è sysname, con un valore predefinito .NULL

Importante

Non usare una password vuota. Usare una password complessa.

[ @conflict_retention = ] conflict_retention

Viene specificato il periodo di memorizzazione dei conflitti espresso in giorni. @conflict_retention è int, con un valore predefinito di 14 giorni prima che la riga del conflitto venga rimossa dalla tabella dei conflitti.

[ @keep_partition_changes = ] N'keep_partition_changes'

Specifica se abilitare le ottimizzazioni delle modifiche delle partizioni quando non è possibile usare le partizioni pre-calcolate. @keep_partition_changes è nvarchar(5), con il valore predefinito true.

  • false significa che le modifiche alla partizione non sono ottimizzate e quando non vengono usate partizioni pre-calcolate, le partizioni inviate a tutti i Sottoscrittori vengono verificate quando i dati vengono modificati in una partizione.

  • true significa che le modifiche alle partizioni sono ottimizzate e solo i Sottoscrittori con righe nelle partizioni modificate sono interessati.

Quando si usano partizioni pre-calcolate, impostare @use_partition_groups su true e impostare @keep_partition_changes su false. Per altre informazioni, vedere Filtri con parametri - Ottimizzare per le partizioni pre-calcolate.

Nota

Se si specifica un valore di true per @keep_partition_changes, specificare il valore per 1 il parametro -MaxNetworkOptimizationagente di snapshot . Per altre informazioni su questo parametro, vedere Replication agente di snapshot. Per informazioni su come specificare i parametri dell'agente, vedere Replication Agent Amministrazione istration.

Con i sottoscrittori di SQL Server Compact, @keep_partition_changes deve essere impostato su per true assicurarsi che le eliminazioni vengano propagate correttamente. Se impostato su false, il sottoscrittore potrebbe avere più righe del previsto.

[ @allow_subscription_copy = ] N'allow_subscription_copy'

Abilita o disabilita la funzione di copia dei database di sottoscrizione che sottoscrivono la pubblicazione. @allow_subscription_copy è nvarchar(5), con il valore predefinito false. Le dimensioni del database di sottoscrizione copiato devono essere inferiori a 2 GB.

[ @allow_synctoalternate = ] N'allow_synctoalternate'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @validate_subscriber_info = ] N'validate_subscriber_info'

Visualizza un elenco delle funzioni utilizzate per definire una partizione del Sottoscrittore dei dati pubblicati quando vengono utilizzati i filtri di riga con parametri. @validate_subscriber_info è nvarchar(500), con il valore predefinito NULL. Queste informazioni vengono utilizzate dall'agente di merge per convalidare la partizione del Sottoscrittore. Ad esempio, se si usa SU edizione StandardR_SNAME nel filtro di riga con parametri, il parametro deve essere @validate_subscriber_info=N'SUSER_SNAME().

Nota

Non è consigliabile specificare questo parametro, ma consentire a SQL Server di determinare automaticamente il criterio di filtro.

[ @add_to_active_directory = ] N'add_to_active_directory'

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. Non è più possibile aggiungere informazioni sulla pubblicazione a Microsoft Active Directory.

[ @max_concurrent_merge = ] max_concurrent_merge

Numero massimo di processi di merge simultanei. @max_concurrent_merge è int, con un valore predefinito .0 Un valore per 0 indica che non esiste alcun limite al numero di processi di unione simultanei in esecuzione in un determinato momento.

Questa proprietà imposta un limite per il numero di processi di merge che è possibile eseguire contemporaneamente in una pubblicazione di tipo merge. Se sono presenti più processi di merge pianificati contemporaneamente rispetto al valore consentito per l'esecuzione, i processi in eccesso vengono inseriti in una coda e attendere il completamento di un processo di merge in esecuzione.

[ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots

Numero massimo di sessioni dell'agente snapshot che possono essere eseguite simultaneamente per generare snapshot dei dati filtrati per le partizioni del Sottoscrittore. @max_concurrent_dynamic_snapshots è int, con il valore predefinito .0 Se 0, non è previsto alcun limite per le sessioni di snapshot numerice. Se sono presenti più processi snapshot pianificati contemporaneamente rispetto al valore consentito per l'esecuzione, i processi in eccesso vengono inseriti in una coda e attendere il completamento di un processo snapshot attualmente in esecuzione.

[ @use_partition_groups = ] N'use_partition_groups'

Specifica che le partizioni pre-calcolate devono essere utilizzate per ottimizzare il processo di sincronizzazione. @use_partition_groups è nvarchar(5) e può essere uno dei valori seguenti:

Valore Descrizione
true La pubblicazione utilizza partizioni pre-calcolate.
false La pubblicazione non usa partizioni pre-calcolate.
NULL (predefinito) Il sistema decide sulla strategia di partizionamento.

Le partizioni pre-calcolate vengono utilizzate per impostazione predefinita. Per evitare di usare partizioni pre-calcolate, è necessario impostare @use_partition_groups su false. Quando NULL, il sistema decide se è possibile usare le partizioni pre-calcolate. Se non è possibile usare le partizioni pre-calcolate, questo valore diventa false efficace senza generare errori. In questi casi, @keep_partition_changes può essere impostato su true per fornire un'ottimizzazione. Per altre informazioni, vedere Filtri con parametri - Filtri di riga con parametri e filtri con parametri - Ottimizzare per le partizioni pre-calcolate.

[ @publication_compatibility_level = ] N'publication_compatibility_level'

Indica la compatibilità con le versioni precedenti della pubblicazione. @publication_compatibility_level è nvarchar(6) e può essere uno di questi valori:

valore Versione
90RTM SQL Server 2005 (9.x)
100RTM SQL Server 2008 (10.0.x)

[ @replicate_ddl = ] replicate_ddl

Indica se per la pubblicazione è supportata la replica dello schema. @replicate_ddl è int, con il valore predefinito NULL. 1 indica che le istruzioni DDL (Data Definition Language) eseguite nel server di pubblicazione vengono replicate e 0 indicano che le istruzioni DDL non vengono replicate. Per altre informazioni, vedere Apportare 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 elimina una colonna per i motivi seguenti.

  • Quando una colonna viene eliminata, sysarticlecolumns deve essere aggiornata per impedire che le nuove istruzioni DML includano la colonna eliminata che causerebbe l'esito negativo dell'agente di distribuzione. Il parametro @replicate_ddl viene ignorato perché la replica deve sempre replicare la modifica dello schema.

  • Quando una colonna viene modificata, è possibile che il tipo di dati di origine o il supporto dei valori Null siano stati modificati, causando la modifica di istruzioni DML che 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 sempre replicare la modifica dello schema.

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

[ @allow_subscriber_initiated_snapshot = ] N'allow_subscriber_initiated_snapshot'

Indica se i Sottoscrittori di questa pubblicazione possono avviare il processo di snapshot per generare lo snapshot filtrato per la relativa partizione dati. @allow_subscriber_initiated_snapshot è nvarchar(5), con il valore predefinito false. true indica che i Sottoscrittori possono avviare il processo di snapshot.

[ @allow_web_synchronization = ] N'allow_web_synchronization'

Specifica se la pubblicazione è abilitata per la sincronizzazione Web. @allow_web_synchronization è nvarchar(5), con il valore predefinito false. true specifica che le sottoscrizioni di questa pubblicazione possono essere sincronizzate tramite HTTPS. Per altre informazioni, vedere Web Synchronization for Merge Replication. Per supportare i Sottoscrittori di SQL Server Compact, è necessario specificare true.

[ @web_synchronization_url = ] N'web_synchronization_url'

Specifica il valore predefinito dell'URL Internet utilizzato per la sincronizzazione tramite il Web. @web_synchronization_url è nvarchar(500), con il valore predefinito NULL. Definisce l'URL Internet predefinito se non viene impostato in modo esplicito quando viene eseguita sp_addmergepullsubscription_agent .

[ @allow_partition_realignment = ] N'allow_partition_realignment'

Determina se le eliminazioni vengono inviate al Sottoscrittore quando la modifica della riga nel server di pubblicazione provoca la modifica della partizione. @allow_partition_realignment è nvarchar(5), con il valore predefinito true.

  • true invia le eliminazioni al Sottoscrittore per riflettere i risultati di una modifica della partizione rimuovendo i dati che non fanno più parte della partizione del Sottoscrittore.

  • false lascia i dati di una partizione precedente nel Sottoscrittore, in cui le modifiche apportate a questi dati nel server di pubblicazione non vengono replicate nel Sottoscrittore, ma le modifiche apportate nel Sottoscrittore vengono replicate nel server di pubblicazione.

L'impostazione di @allow_partition_realignment su false viene usata per conservare i dati in una sottoscrizione da una partizione precedente quando i dati devono essere accessibili per scopi cronologici.

Nota

I dati che rimangono nel Sottoscrittore in seguito all'impostazione @allow_partition_realignment devono false essere considerati come se fossero di sola lettura, ma questo non viene applicato dal sistema di replica.

[ @retention_period_unit = ] N'retention_period_unit'

Specifica le unità per il periodo di conservazione impostato da @retention. @retention_period_unit è nvarchar(10)e può essere uno dei valori seguenti.

valore Versione
day (predefinito) Il periodo di memorizzazione è specificato in giorni.
week Il periodo di memorizzazione è specificato in settimane.
month Il periodo di memorizzazione è specificato in mesi.
year Il periodo di memorizzazione è specificato in anni.

[ @generation_leveling_threshold = ] generation_leveling_threshold

Viene specificato il numero di modifiche contenute in una generazione. Una generazione è una raccolta di modifiche recapitate a un server di pubblicazione o a un Sottoscrittore. @generation_leveling_threshold è int, con il valore predefinito .1000

[ @automatic_reinitialization_policy = ] automatic_reinitialization_policy

Specifica se le modifiche vengono caricate dal Sottoscrittore prima di una reinizializzazione automatica richiesta da una modifica alla pubblicazione, in cui è stato specificato un valore di 1 per @force_reinit_subscription. @automatic_reinitialization_policy è bit, con il valore predefinito 0.

1 significa che le modifiche vengono caricate dal Sottoscrittore prima che si verifichi una reinizializzazione automatica.

Importante

Se si aggiunge, rilascia o si modifica un filtro con parametri, le modifiche in sospeso nel Sottoscrittore non possono essere caricate nel server di pubblicazione durante la reinizializzazione. Per caricare le modifiche in sospeso, sincronizzare tutte le sottoscrizioni prima di modificare il filtro.

[ @conflict_logging = ] N'conflict_logging'

Specifica la posizione di archiviazione dei record dei conflitti. @conflict_logging è nvarchar(15)e può essere uno dei valori seguenti:

Valore Descrizione
publisher I record con conflitti vengono archiviati nel server di pubblicazione.
subscriber I record con conflitti vengono archiviati nel Sottoscrittore che ha causato il conflitto. Non supportato per i Sottoscrittori di SQL Server Compact.
both I record con conflitti vengono archiviati nel server di pubblicazione e nel Sottoscrittore.
NULL (predefinito) La replica imposta automaticamente @conflict_logging su both quando il valore @publication_compatibility_level è 90RTM e su publisher in tutti gli altri casi.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_addmergepublication viene usato nella replica di tipo merge.

Per elencare gli oggetti pubblicazione in Active Directory utilizzando il parametro @add_to_active_directory , è necessario creare l'oggetto SQL Server in Active Directory.

Se esistono più pubblicazioni che pubblicano lo stesso oggetto di database, solo le pubblicazioni con un valore @replicate_ddl di 1 replicare ALTER FUNCTIONALTER PROCEDUREALTER TABLEALTER VIEWle istruzioni , e ALTER TRIGGER DDL. Tuttavia, un'istruzione ALTER TABLE DROP COLUMN DDL verrà replicata da tutte le pubblicazioni che pubblicano la colonna eliminata.

Per i Sottoscrittori di SQL Server Compact, il valore di @alternate_snapshot_folder viene usato solo quando il valore di @snapshot_in_default_folder è false.

Con la replica DDL abilitata (@replicate_ddl = 1) per una pubblicazione, per apportare modifiche DDL non replicate alla pubblicazione, è prima necessario eseguire sp_changemergepublication (Transact-SQL) per impostare @replicate_ddl su 0. Dopo che le istruzioni DDL non replicate sono state rilasciate, sp_changemergepublication è possibile eseguire di nuovo per riattivare la replica DDL.

Esempi

-- To avoid storing the login and password in the script file, the value 
-- is passed into SQLCMD as a scripting variable. 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".

--Declarations for adding a merge publication
DECLARE @publicationDB AS sysname;
DECLARE @publication AS sysname;
DECLARE @login AS sysname;
DECLARE @password AS sysname;
SET @publicationDB = N'AdventureWorks2022'; 
SET @publication = N'AdvWorksSalesOrdersMerge'; 
SET @login = $(Login);
SET @password = $(Password);

-- Enable merge replication on the publication database, using defaults.
USE master
EXEC sp_replicationdboption 
  @dbname=@publicationDB, 
  @optname=N'merge publish',
  @value = N'true' 

-- Create a new merge publication, explicitly setting the defaults. 
USE [AdventureWorks2022]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2022.',
  @publication_compatibility_level  = N'120RTM';

-- Create a new snapshot job for the publication.
EXEC sp_addpublication_snapshot 
  @publication = @publication, 
  @job_login = @login, 
  @job_password = @password;
GO

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o db_owner ruolo predefinito del database possono eseguire sp_addmergepublication.