sp_addmergesubscription (Transact-SQL)
Crea una sottoscrizione push o pull di tipo merge. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Sintassi
sp_addmergesubscription [ @publication= ] 'publication'
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db= ] 'subscriber_db' ]
[ , [ @subscription_type= ] 'subscription_type' ]
[ , [ @subscriber_type= ] 'subscriber_type' ]
[ , [ @subscription_priority= ] subscription_priority ]
[ , [ @sync_type= ] 'sync_type' ]
[ , [ @frequency_type= ] frequency_type ]
[ , [ @frequency_interval= ] frequency_interval ]
[ , [ @frequency_relative_interval= ] frequency_relative_interval ]
[ , [ @frequency_recurrence_factor= ] frequency_recurrence_factor ]
[ , [ @frequency_subday= ] frequency_subday ]
[ , [ @frequency_subday_interval= ] frequency_subday_interval ]
[ , [ @active_start_time_of_day= ] active_start_time_of_day ]
[ , [ @active_end_time_of_day= ] active_end_time_of_day ]
[ , [ @active_start_date= ] active_start_date ]
[ , [ @active_end_date= ] active_end_date ]
[ , [ @optional_command_line= ] 'optional_command_line' ]
[ , [ @description= ] 'description' ]
[ , [ @enabled_for_syncmgr= ] 'enabled_for_syncmgr' ]
[ , [ @offloadagent= ] remote_agent_activation]
[ , [ @offloadserver= ] 'remote_agent_server_name' ]
[ , [ @use_interactive_resolver= ] 'use_interactive_resolver' ]
[ , [ @merge_job_name= ] 'merge_job_name' ]
[ , [ @hostname = ] 'hostname'
Argomenti
[ @publication=] 'publication'
Nome della pubblicazione. publication è di tipo sysname e non prevede alcun valore predefinito. La pubblicazione deve essere già esistente.[ @subscriber =] 'subscriber'
Nome del Sottoscrittore. subscriber è di tipo sysname e il valore predefinito è NULL.[ @subscriber_db=] 'subscriber_db'
Nome del database di sottoscrizione. subscriber_db è di tipo sysname e il valore predefinito è NULL.[ @subscription_type=] 'subscription_type'
Tipo di sottoscrizione. subscription_type è di tipo nvarchar(15) e il valore predefinito è PUSH. Se il valore è push, viene aggiunta una sottoscrizione push e l'agente di merge viene aggiunto al server di distribuzione. Se il valore è pull, viene aggiunta una sottoscrizione pull senza aggiungere un agente di merge al server di distribuzione.[!NOTA]
Con le sottoscrizioni anonime non è necessario utilizzare questa stored procedure.
[ @subscriber_type=] 'subscriber_type'
Tipo di Sottoscrittore. subscriber_type è di tipo nvarchar(15). I possibili valori sono i seguenti.Valore
Descrizione
local (predefinito)
Sottoscrittore noto solo al server di pubblicazione.
global
Sottoscrittore noto a tutti i server.
In SQL Server 2005 e versioni successive le sottoscrizioni locali vengono dette sottoscrizioni client e le sottoscrizioni globali vengono dette sottoscrizioni server. Per ulteriori informazioni, vedere la sezione relativa ai tipi di sottoscrizione in Modalità di rilevamento e risoluzione dei conflitti da parte della replica di tipo merge.
[ @subscription_priority=] subscription_priority
Numero che indica il livello di priorità della sottoscrizione. subscription_priority è di tipo real e il valore predefinito è NULL. Per le sottoscrizioni locali e anonime, il livello di priorità è 0.0. Per le sottoscrizioni globali, la priorità deve essere inferiore a 100.0.[ @sync_type=] 'sync_type'
Tipo di sincronizzazione della sottoscrizione. sync_type è di tipo nvarchar(15) e il valore predefinito è automatic. Il valore può essere automatic o none. Se il valore è automatic, lo schema e i dati iniziali per le tabelle pubblicate vengono trasferiti per primi nel Sottoscrittore. Se il valore è none, si presuppone che nel Sottoscrittore siano già disponibili lo schema e i dati iniziali per le tabelle pubblicate. Le tabelle e i dati di sistema vengono sempre trasferiti.[!NOTA]
È consigliabile non specificare un valore none. Per ulteriori informazioni, vedere Inizializzazione di una sottoscrizione di tipo merge senza snapshot.
[ @frequency_type=] frequency_type
Valore che indica la frequenza con cui viene eseguito l'agente di merge. frequency_type è di tipo int. I possibili valori sono i seguenti.Valore
Descrizione
1
Una volta
4
Giornaliera
8
Settimanale
10
Mensile
20
Mensile, in base all'intervallo di frequenza
40
All'avvio di SQL Server Agent
NULL (predefinito)
[ @frequency_interval=] frequency_interval
Giorno o giorni in cui viene eseguito l'agente di merge. frequency_interval è di tipo int. I possibili valori sono i seguenti.Valore
Descrizione
1
Domenica
2
Lunedì
3
Martedì
4
Mercoledì
5
Giovedì
6
Venerdì
7
Sabato
8
Giorno
9
Giorni feriali
10
Giorni festivi
NULL (predefinito)
[ @frequency_relative_interval=] frequency_relative_interval
Occorrenza di merge pianificata dell'intervallo di frequenza per ogni mese. frequency_relative_interval è di tipo int. I possibili valori sono i seguenti.Valore
Descrizione
1
Primo
2
Secondo
4
Terzo
8
Quarto
16
Ultimo
NULL (predefinito)
[ @frequency_recurrence_factor=] frequency_recurrence_factor
Fattore di ricorrenza utilizzato da frequency_type. frequency_recurrence_factor è di tipo int e il valore predefinito è NULL.[ @frequency_subday=] frequency_subday
Unità di frequency_subday_interval. frequency_subday è di tipo int. I possibili valori sono i seguenti.Valore
Descrizione
1
Una volta
2
Secondo
4
Minuto
8
Ora
NULL (predefinito)
[ @frequency_subday_interval=] frequency_subday_interval
Frequenza di frequency_subday tra due operazioni di merge. frequency_subday_interval è di tipo int e il valore predefinito è NULL.[ @active_start_time_of_day=] active_start_time_of_day
Ora del giorno della prima esecuzione pianificata dell'agente di merge, nel formato HHMMSS. active_start_time_of_day è di tipo int e il valore predefinito è NULL.[ @active_end_time_of_day=] active_end_time_of_day
Ora del giorno dell'ultima esecuzione pianificata dell'agente di merge, nel formato HHMMSS. active_end_time_of_day è di tipo int e il valore predefinito è NULL.[ @active_start_date=] active_start_date
Data della prima esecuzione pianificata dell'agente di merge, nel formato AAAAMMGG. active_start_date è di tipo int e il valore predefinito è NULL.[ @active_end_date=] active_end_date
Data dell'ultima esecuzione pianificata dell'agente di merge, nel formato AAAAMMGG. active_end_date è di tipo int e il valore predefinito è NULL.[ @optional_command_line=] 'optional_command_line'
Prompt dei comandi facoltativo da eseguire. optional_command_lineè di tipo nvarchar(4000) e il valore predefinito è NULL. Questo parametro viene utilizzato per aggiungere un comando per l'acquisizione e il salvataggio dell'output in un file o per specificare un file o un attributo di configurazione.[ @description=] 'description'
Breve descrizione della sottoscrizione di tipo merge. descriptionè di tipo nvarchar(255) e il valore predefinito è NULL. Questo valore viene visualizzato da Monitoraggio replica nella colonna Nome descrittivo, che può essere utilizzata per ordinare le sottoscrizioni per una pubblicazione monitorata.[ @enabled_for_syncmgr=] 'enabled_for_syncmgr'
Specifica se la sottoscrizione può essere sincronizzata tramite Gestione sincronizzazione Microsoft Windows. enabled_for_syncmgr è di tipo nvarchar(5) e il valore predefinito è FALSE. Se il valore è false, la sottoscrizione non viene registrata in Gestione sincronizzazione. Se il valore è true, la sottoscrizione viene registrata in Gestione sincronizzazione e può essere sincronizzata senza avviare MicrosoftSQL Server Management Studio.[ @offloadagent= ] remote_agent_activation
Specifica che l'agente può essere attivato in remoto. remote_agent_activation è di tipo bit e il valore predefinito è 0.[!NOTA]
Questo parametro è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti.
[ @offloadserver= ] 'remote_agent_server_name'
Specifica il nome di rete del server da utilizzare per l'attivazione remota dell'agente. remote_agent_server_name è di tipo sysname e il valore predefinito è NULL.[ @use_interactive_resolver= ] 'use_interactive_resolver'
Consente la risoluzione interattiva dei conflitti per tutti gli articoli che la supportano. use_interactive_resolver è di tipo nvarchar(5) e il valore predefinito è FALSE.[ @merge_job_name= ] 'merge_job_name'
Nome del processo dell'agente di merge che viene aggiunto per la sottoscrizione. merge_job_name è di tipo sysname e il valore predefinito è NULL. Questo parametro consente di specificare il nome di un processo dell'agente di merge, in modo da poterlo amministrare successivamente.[ @hostname= ] 'hostname'
Sostituisce il valore restituito da HOST_NAME quando questa funzione viene utilizzata nella clausola WHERE di un filtro con parametri. Hostname è di tipo sysname e il valore predefinito è NULL.Importante Per motivi relativi alle prestazioni è consigliabile evitare di applicare funzioni ai nomi di colonna nelle clausole per filtri di riga con parametri, come LEFT([MyColumn]) = SUSER_SNAME(). Se si utilizza HOST_NAME in una clausola di filtro e si sostituisce il valore di HOST_NAME, potrebbe essere necessario convertire i tipi di dati tramite CONVERT. Per ulteriori informazioni sulle procedure consigliate in questo caso, vedere la sezione relativa alla sostituzione del valore HOST_NAME() nell'argomento Filtri di riga con parametri.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
La stored procedure sp_addmergesubscription viene utilizzata nella replica di tipo merge.
Se sp_addmergesubscription viene eseguita da un membro del ruolo predefinito del server sysadmin per creare una sottoscrizione push, il processo dell'agente di merge viene creato in modo implicito e viene eseguito utilizzando l'account del servizio SQL Server Agent. È consigliabile eseguire la stored procedure sp_addmergepushsubscription_agent e specificare le credenziali di un account diverso di Windows specifico dell'agente per @job_login e @job_password. Per ulteriori informazioni, vedere Modello di protezione dell'agente di replica.
Esempio
-- This script uses sqlcmd scripting variables. They are in the form
-- $(MyVariable). 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 @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica';
SET @hostname = N'adventure-works\david8'
-- Add a push subscription to a merge publication.
USE [AdventureWorks]
EXEC sp_addmergesubscription
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@subscription_type = N'push',
@hostname = @hostname;
--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent
@publication = @publication,
@subscriber = @subscriber,
@subscriber_db = @subscriptionDB,
@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_addmergesubscription.
Vedere anche