sp_addmergepublication (Transact-SQL)

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

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

Sintassi

sp_addmergepublication [ @publication = ] 'publication' 
    [ , [ @description = ] 'description' 
    [ , [ @retention = ] retention ] 
    [ , [ @sync_mode = ] 'sync_mode' ] 
    [ , [ @allow_push = ] 'allow_push' ] 
    [ , [ @allow_pull = ] 'allow_pull' ] 
    [ , [ @allow_anonymous = ] 'allow_anonymous' ] 
    [ , [ @enabled_for_internet = ] 'enabled_for_internet' ] 
    [ , [ @centralized_conflicts = ] 'centralized_conflicts' ] 
    [ , [ @dynamic_filters = ] 'dynamic_filters' ] 
    [ , [ @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' ] 
    [ , [ @conflict_retention = ] conflict_retention ] 
    [ , [ @keep_partition_changes = ] 'keep_partition_changes' ] 
    [ , [ @allow_subscription_copy = ] 'allow_subscription_copy' ] 
    [ , [ @allow_synctoalternate = ] 'allow_synctoalternate' ] 
    [ , [ @validate_subscriber_info = ] 'validate_subscriber_info' ] 
    [ , [ @add_to_active_directory = ] 'add_to_active_directory' ] 
    [ , [ @max_concurrent_merge = ] maximum_concurrent_merge ] 
    [ , [ @max_concurrent_dynamic_snapshots = ] max_concurrent_dynamic_snapshots ]
    [ , [ @use_partition_groups = ] 'use_partition_groups' ]
    [ , [ @publication_compatibility_level = ] 'backward_comp_level' ]
    [ , [ @replicate_ddl = ] replicate_ddl ]
    [ , [ @allow_subscriber_initiated_snapshot = ] 'allow_subscriber_initiated_snapshot' ] 
    [ , [ @allow_web_synchronization = ] 'allow_web_synchronization' ] 
    [ , [ @web_synchronization_url = ] 'web_synchronization_url' ]
    [ , [ @allow_partition_realignment = ] 'allow_partition_realignment' ]
    [ , [ @retention_period_unit = ] 'retention_period_unit' ]
    [ , [ @generation_leveling_threshold = ] generation_leveling_threshold ]
    [ , [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy ]
    [ , [ @conflict_logging = ] 'conflict_logging' ]

Argomenti

  • [ @publication = ] 'publication'
    Nome della pubblicazione di tipo merge da creare. publication è di tipo sysname, non prevede alcun valore predefinito e non può corrispondere alla parola chiave ALL. Il nome della pubblicazione deve essere univoco all'interno del database.

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

  • [ @retention = ] retention
    Periodo di memorizzazione, in unità di misura del periodo di memorizzazione, per cui salvare le modifiche alla pubblicazione specificata in publication. retention è di tipo int e il valore predefinito è 14 unità. Le unità di misura del periodo di memorizzazione sono definite da retention_period_unit. Se la sottoscrizione non è sincronizzata all'interno del periodo di memorizzazione e le modifiche in sospeso che avrebbe ricevuto non sono state rimosse da una operazione di pulizia nel Distributore, la sottoscrizione scade e deve essere reinizializzata. Il periodo di memorizzazione massimo consentito equivale al numero di giorni tra il 31 dicembre 9999 e la data corrente.

    Nota

    Il periodo di memorizzazione per le pubblicazioni di tipo merge ha una tolleranza di 24 ore in modo da includere i Sottoscrittori con fusi orari diversi. Se, ad esempio, si imposta un periodo di memorizzazione di un giorno, il periodo di memorizzazione effettivo sarà di 48 ore.

  • [ @sync_mode = ] 'sync_mode'
    Modalità di sincronizzazione iniziale dei Sottoscrittori della pubblicazione. sync_mode è di tipo nvarchar(10). I possibili valori sono i seguenti:

    Valore

    Descrizione

    native (valore 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. È necessario per supportare i Sottoscrittori Microsoft SQL Server Compact 3.5 SP2 e non SQL Server.

  • [ @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 è TRUE, che consente la creazione di sottoscrizioni pull nella pubblicazione. È necessario specificare true per supportare i Sottoscrittori SQL Server Compact 3.5 SP2.

  • [ @allow_anonymous = ] 'allow_anonymous'
    Specifica se è consentito creare sottoscrizioni anonime per la pubblicazione specificata. allow_anonymous è di tipo nvarchar(5) e il valore predefinito è TRUE, che consente la creazione di sottoscrizioni anonime nella pubblicazione. Per supportare i Sottoscrittori SQL Server Compact 3.5 SP2, è necessario specificare true.

  • [ @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 il valore è 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. Se il valore è false, la pubblicazione non è abilitata per l'accesso a Internet.

  • [ @centralized_conflicts =] 'centralized_conflicts'
    Questo parametro è deprecato ed è supportato solo per compatibilità con gli script di versioni precedenti. Utilizzare conflict_logging per specificare la posizione di archiviazione dei record dei conflitti.

  • [ @dynamic_filters =] 'dynamic_filters'
    Consente alla pubblicazione di tipo merge di utilizzare i filtri di riga con parametri. dynamic_filters è di tipo nvarchar(5) e il valore predefinito è FALSE.

    Nota

    Si consiglia di non specificare questo parametro ma di consentire a SQL Server di determinare automaticamente se vengono utilizzati i filtri di riga con parametri. Se si specifica un valore true per dynamic_filters, è necessario definire un filtro di riga con parametri per l'articolo. Per ulteriori informazioni, vedere Procedura: Definizione e modifica di un filtro di riga con parametri per un articolo di merge (programmazione Transact-SQL della replica).

  • [ @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 il valore è true, i file di snapshot sono disponibili nella cartella predefinita. Se il valore è false, i file di snapshot verranno archiviati nella posizione alternativa specificata da alternate_snapshot_folder. Una posizione alternativa può essere un altro server, un'unità di rete oppure un supporto rimovibile, ad esempio un CD-ROM o dischi rimovibili. È inoltre possibile archiviare i file di snapshot in un sito FTP (File Transfer Protocol) in modo da poterli recuperare successivamente tramite il Sottoscrittore. Si noti che questo parametro può essere true anche quando viene specificata una posizione da alt_snapshot_folder. Tale combinazione indica che i file di snapshot vengono archiviati sia nella posizione predefinita che in posizioni alternative.

  • [ @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. Durante l'applicazione dello snapshot in un Sottoscrittore, l'agente di merge esegue lo script pre-snapshot prima degli script degli oggetti replicati. Lo script viene eseguito nel contesto di sicurezza utilizzato dall'agente di merge durante la connessione al database di sottoscrizione. Gli script pre-snapshot non vengono eseguiti nei Sottoscrittori SQL Server Compact 3.5 SP2.

  • [ @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 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 post-snapshot non vengono eseguiti nei Sottoscrittori SQL Server Compact 3.5 SP2.

  • [ @compress_snapshot = ] 'compress_snapshot'
    Specifica che lo snapshot scritto 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 di dimensioni superiori a 2GB 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. Non è possibile comprimere lo snapshot all'interno della cartella predefinita. Per supportare i Sottoscrittori SQL Server Compact 3.5 SP2, è necessario specificare false.

  • [ @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 dei file di snapshot della pubblicazione, dove i file possono essere prelevati dall'agente di merge di un Sottoscrittore. Poiché questa proprietà viene archiviata per ogni pubblicazione, a ogni pubblicazione può essere associato un valore di 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 merge di un Sottoscrittore. Poiché questa proprietà viene archiviata per ogni pubblicazione, a ogni pubblicazione può essere associato un valore di ftp_port diverso.

  • [ @ftp_subdirectory = ] 'ftp_subdirectory'
    Specifica la posizione dei file di snapshot, dove i file possono essere prelevati dall'agente 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.

    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 riportati sopra in corsivo dipendono dai dettagli della pubblicazione e dalla partizione del Sottoscrittore.

  • [ @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.

    Nota sulla sicurezzaNota sulla sicurezza

    Non utilizzare una password vuota. Utilizzare una password complessa.

  • [ @conflict_retention = ] conflict_retention
    Periodo di memorizzazione dei conflitti espresso in giorni. conflict_retention è di tipo int e il valore predefinito è 14 giorni, trascorsi i quali la riga di conflitto viene eliminata dalla tabella dei conflitti.

  • [ @keep_partition_changes = ] 'keep_partition_changes'
    Specifica se attivare le ottimizzazioni delle modifiche alle partizioni quando non è possibile utilizzare le partizioni pre-calcolate. keep_partition_changes è di tipo nvarchar(5) e il valore predefinito è TRUE. Il valore false indica che le modifiche alle partizioni non vengono ottimizzate e, se non si utilizzano partizioni pre-calcolate, le partizioni inviate a tutti i Sottoscrittori saranno verificate quando si modificano i dati in una partizione. Il valore true indica che le modifiche alle partizioni vengono ottimizzate e che sono interessati solo i Sottoscrittori con righe nelle partizioni modificate. In caso di utilizzo di partizioni pre-calcolate, impostare use_partition_groups su true e keep_partition_changes su false. Per ulteriori informazioni, vedere Ottimizzazione delle prestazioni dei filtri con parametri con le partizioni pre-calcolate.

    Nota

    Se si specifica il valore true per keep_partition_changes, specificare il valore 1 per il parametro -MaxNetworkOptimization dell'agente snapshot. Per ulteriori informazioni su questo parametro, vedere Agente snapshot repliche. Per informazioni su come specificare i parametri degli agenti, vedere Amministrazione degli agenti di replica.

    Con i Sottoscrittori di SQL Server Compact 3.5 SP2, il parametro keep_partition_changes deve essere impostato su true per assicurarsi che le eliminazioni vengano propagate correttamente. Se impostato su false, nel Sottoscrittore potrebbero essere presenti più righe rispetto al previsto.

  • [ @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. Le dimensioni del database di sottoscrizione in fase di copia devono essere inferiori a 2 gigabyte (GB).

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

  • [ @validate_subscriber_info = ] '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 è di tipo nvarchar(500) e il valore predefinito è NULL. Queste informazioni vengono utilizzate dall'agente di merge per convalidare la partizione del Sottoscrittore. Se, ad esempio, nel filtro di riga con parametri viene utilizzato SUSER_SNAME, il parametro deve essere @validate_subscriber_info=N'SUSER_SNAME()'.

    Nota

    Si consiglia di non specificare questo parametro e di consentire invece a SQL Server di determinare il criterio di filtro in modo automatico.

  • [ @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.

  • [ @max_concurrent_merge = ] maximum_concurrent_merge
    Numero massimo di processi di merge simultanei. maximum_concurrent_merge è di tipo int e il valore predefinito è 0. Il valore 0 di questa proprietà indica che non esiste alcuna limitazione per il numero di processi di merge eseguibili contemporaneamente. Questa proprietà imposta un limite per il numero di processi di merge che è possibile eseguire contemporaneamente in una pubblicazione di tipo merge. Se è stata pianificata l'esecuzione simultanea di un numero di processi maggiore del limite consentito, i processi in eccesso vengono inseriti in una coda dove rimangono in attesa fino al completamento del processo di merge attualmente 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. maximum_concurrent_dynamic_snapshots è di tipo int e il valore predefinito è 0. Se il valore è 0, non vi sono limiti al numero di sessioni di snapshot. Se è stata pianificata l'esecuzione simultanea di un numero di processi di snapshot superiore al limite consentito, i processi in eccesso vengono inseriti in una coda in cui rimangono in attesa fino al completamento del processo di snapshot in esecuzione.

  • [ @use_partition_groups = ] 'use_partition_groups'
    Specifica che le partizioni pre-calcolate devono essere utilizzate per ottimizzare il processo di sincronizzazione. use_partition_groups è di tipo nvarchar(5). I possibili valori sono i seguenti:

    Valore

    Descrizione

    true

    La pubblicazioni utilizza le partizioni pre-calcolate.

    false

    La pubblicazioni non utilizza le partizioni pre-calcolate.

    NULL (valore predefinito)

    Il sistema decide sulla strategia di partizionamento.

    Le partizioni pre-calcolate vengono utilizzate per impostazione predefinita. Per evitare di utilizzare partizioni pre-calcolate, use_partition_groups deve essere impostato su false. Se è NULL, il sistema decide se è possibile utilizzare le partizioni pre-calcolate. Se non è possibile utilizzare le partizioni pre-calcolate, di fatto questo valore verrà impostato su false senza generare alcun errore. In tali casi, è possibile impostare keep_partition_changes su true per consentire un certo livello di ottimizzazione. Per ulteriori informazioni, vedere Filtri di riga con parametri e Ottimizzazione delle prestazioni dei filtri con parametri con le partizioni pre-calcolate.

  • [ @publication_compatibility_level = ] backward_comp_level
    Indica la compatibilità con le versioni precedenti della pubblicazione. backward_comp_level è di tipo nvarchar(6). I possibili valori sono i seguenti:

    Valore

    Versione

    70RTM

    SQL Server 7.0

    70SP1

    SQL Server 7.0 Service Pack 1

    70SP2

    SQL Server 7.0 Service Pack 2

    70SP3

    SQL Server 7.0 Service Pack 3

    70SP4

    SQL Server 7.0 Service Pack 4

    80RTM

    SQL Server 2000

    80SP1

    SQL Server 2000 Service Pack 1

    80SP2

    SQL Server 2000 Service Pack 2

    80SP3

    SQL Server 2000 Service Pack 3

    90RTM

    SQL Server 2005

    100RTM

    SQL Server 2008

  • [ @replicate_ddl = ] replicate_ddl
    Indica se per la pubblicazione è supportata la replica dello schema. replicate_ddl è di tipo int e il valore predefinito è 1. 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. 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.

  • [ @allow_subscriber_initiated_snapshot = ] '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 è di tipo nvarchar(5) e il valore predefinito è FALSE. true indica che i Sottoscrittori possono avviare il processo di snapshot.

  • [ @allow_web_synchronization = ] 'allow_web_synchronization'
    Specifica se la pubblicazione è abilitata per la sincronizzazione Web. allow_web_synchronization è di tipo nvarchar(5) e il valore predefinito è FALSE. Il valore true specifica che le sottoscrizioni della pubblicazione possono essere sincronizzate tramite HTTPS. Per ulteriori informazioni, vedere Sincronizzazione Web per la replica di tipo merge. Per supportare i Sottoscrittori SQL Server Compact 3.5 SP2, è necessario specificare true.

  • [ @web_synchronization_url= ] 'web_synchronization_url'
    Specifica il valore predefinito dell'URL Internet utilizzato per la sincronizzazione Web. web_synchronization_url i è di tipo nvarchar(500) e il valore predefinito è NULL. Definisce l'URL Internet predefinito se non ne è stato impostato uno in modo esplicito durante l'esecuzione di sp_addmergepullsubscription_agent.

  • [ @allow_partition_realignment = ] '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 è di tipo nvarchar(5) e il valore predefinito è TRUE. Se il valore è true, le eliminazioni vengono inviate al Sottoscrittore in modo da riflettere i risultati di una modifica della partizione, rimuovendo i dati che non fanno più parte della partizione del Sottoscrittore. Se il valore è false, i dati di una vecchia partizione vengono mantenuti nel Sottoscrittore. Le modifiche apportate a tali dati nel server di pubblicazione non verranno replicate nel Sottoscrittore, ma le modifiche apportate nel Sottoscrittore verranno replicate nel server di pubblicazione. Impostando allow_partition_realignment su false è possibile conservare i dati di una vecchia partizione in una sottoscrizione, nel caso in cui sia necessario accedere ai dati per motivi cronologici.

    Nota

    Se allow_partition_realignment è impostato su false, i dati che rimangono nel Sottoscrittore devono essere considerati di sola lettura, anche se questa impostazione non viene imposta dal sistema di replica.

  • [ @retention_period_unit = ] 'retention_period_unit'
    Specifica le unità per il periodo di memorizzazione impostato tramite retention. retention_period_unit è di tipo nvarchar(10). I possibili valori sono i seguenti:

    Valore

    Versione

    day (valore 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
    Specifica 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 è di tipo int e il valore predefinito è 1000. Per ulteriori informazioni, vedere Come la replica di tipo merge rileva ed enumera le modifiche.

  • [ @automatic_reinitialization_policy = ] automatic_reinitialization_policy
    Specifica se le modifiche sono caricate dal Sottoscrittore prima di una reinizializzazione automatica richiesta da una modifica apportata alla pubblicazione, nel caso in cui sia stato specificato il valore 1 per @force_reinit_subscription. automatic_reinitialization_policy è di tipo bit e il valore predefinito è 0. Il valore 1 indica che le modifiche vengono caricate dal Sottoscrittore prima di una reinizializzazione automatica.

    Nota importanteImportante

    Se si aggiunge, elimina o 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 = ] 'conflict_logging'
    Specifica la posizione di archiviazione dei record dei conflitti. conflict_logging è di tipo nvarchar(15). I possibili valori sono i seguenti:

    Valore

    Descrizione

    publisher

    I record dei conflitti vengono archiviati nel server di pubblicazione.

    subscriber

    I record dei conflitti vengono archiviati nel Sottoscrittore che ha causato il conflitto. Non supportato per Sottoscrittori SQL Server Compact 3.5 SP2.

    both

    I record dei conflitti vengono archiviati nel server di pubblicazione e nel Sottoscrittore.

    NULL (valore predefinito)

    Tramite la replica conflict_logging viene impostato automaticamente su both quando il valore di backward_comp_level è 90RTM e su publisher in tutti gli altri casi.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

Osservazioni

La stored procedure sp_addmergepublication viene utilizzata in repliche di tipo merge.

Per visualizzare un elenco degli oggetti di pubblicazione in Active Directory tramite il parametro @add_to_active_directory, è necessario che l'oggetto SQL Server sia già stato creato in Active Directory.

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 valore di replicate_ddl impostato su 1. Una istruzione ALTER TABLE DROP COLUMN DDL verrà tuttavia replicata da tutte le pubblicazioni che stanno pubblicando la colonna eliminata.

Per i Sottoscrittori SQL Server Compact 3.5 SP2, il valore di alternate_snapshot_folder viene utilizzato solo quando il valore di snapshot_in_default_folder è false.

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

Esempio

-- 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'AdventureWorks2008R2'; 
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 [AdventureWorks2008R2]
EXEC sp_addmergepublication 
-- These parameters are optional.
  @publication = @publication,
  -- optional parameters 
  @description = N'Merge publication of AdventureWorks2008R2.',
  @publication_compatibility_level  = N'90RTM';

-- 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 del ruolo predefinito del database db_owner possono eseguire sp_addmergepublication.