sp_addmergesubscription (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Crea una sottoscrizione push o pull di tipo merge. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_addmergesubscription
[ @publication = ] N'publication'
[ , [ @subscriber = ] N'subscriber' ]
[ , [ @subscriber_db = ] N'subscriber_db' ]
[ , [ @subscription_type = ] N'subscription_type' ]
[ , [ @subscriber_type = ] N'subscriber_type' ]
[ , [ @subscription_priority = ] subscription_priority ]
[ , [ @sync_type = ] N'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 = ] N'optional_command_line' ]
[ , [ @description = ] N'description' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @offloadagent = ] offloadagent ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
[ , [ @merge_job_name = ] N'merge_job_name' ]
[ , [ @hostname = ] N'hostname' ]
[ ; ]
Argomenti
[ @publication = ] N'publication'
Nome della pubblicazione. @publication è sysname, senza impostazione predefinita. È necessario che la pubblicazione esista già.
[ @subscriber = ] N'subscriber'
Nome del Sottoscrittore. @subscriber è sysname, con il valore predefinito NULL
.
[ @subscriber_db = ] N'subscriber_db'
Nome del database di sottoscrizione. @subscriber_db è sysname, con un valore predefinito .NULL
[ @subscription_type = ] N'subscription_type'
Tipo di sottoscrizione @subscription_type è nvarchar(15), con il valore predefinito push
.
- Se
push
, viene aggiunta una sottoscrizione push e il agente di merge viene aggiunto nel server di distribuzione. - Se
pull
, viene aggiunta una sottoscrizione pull senza aggiungere un agente di merge nel server di distribuzione.
Nota
Le sottoscrizioni anonime non devono usare questa stored procedure.
[ @subscriber_type = ] N'subscriber_type'
Tipo di Sottoscrittore. @subscriber_type è nvarchar(15)e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
local (predefinito) |
Sottoscrittore noto solo al server di pubblicazione. |
global |
Sottoscrittore noto a tutti i server. |
In SQL Server 2005 (9.x) e versioni successive, le sottoscrizioni locali vengono definite sottoscrizioni client e le sottoscrizioni globali vengono definite sottoscrizioni server.
[ @subscription_priority = ] subscription_priority
Numero che indica la priorità per la sottoscrizione. @subscription_priority è reale, con un valore predefinito .NULL
Per le sottoscrizioni locali e anonime, la priorità è 0.0
. Per le sottoscrizioni globali, la priorità deve essere minore di 100.0
.
[ @sync_type = ] N'sync_type'
Tipo di sincronizzazione della sottoscrizione. @sync_type è nvarchar(15), con il valore predefinito automatic
.
- Se
automatic
, lo schema e i dati iniziali per le tabelle pubblicate vengono trasferiti prima al Sottoscrittore. - Se
none
, si presuppone che il Sottoscrittore abbia già lo schema e i dati iniziali per le tabelle pubblicate. Le tabelle e i dati di sistema vengono sempre trasferiti.
Nota
È consigliabile non specificare il valore .none
[ @frequency_type = ] frequency_type
Valore che indica quando viene eseguito il agente di merge. @frequency_type è int e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
1 |
Una sola volta |
4 |
Ogni giorno |
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 è int e può essere uno dei valori 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 in ogni mese. @frequency_relative_interval è int e può essere uno di questi valori.
valore | Descrizione |
---|---|
1 |
First |
2 |
Secondo |
4 |
Terza |
8 |
Quarta |
16 |
Ultimo |
NULL (predefinito) |
[ @frequency_recurrence_factor = ] frequency_recurrence_factor
Fattore di ricorrenza utilizzato da @frequency_type. @frequency_recurrence_factor è int, con un valore predefinito .NULL
[ @frequency_subday = ] frequency_subday
Unità per @frequency_subday_interval. @frequency_subday è int e può essere uno dei valori seguenti.
valore | Descrizione |
---|---|
1 |
Una sola volta |
2 |
Secondo |
4 |
Minute |
8 |
Ore |
NULL (predefinito) |
[ @frequency_subday_interval = ] frequency_subday_interval
Frequenza di @frequency_subday tra ogni unione. @frequency_subday_interval è int, con il valore predefinito NULL
.
[ @active_start_time_of_day = ] active_start_time_of_day
Ora del giorno in cui il agente di merge viene pianificato per la prima volta, formattato come HHmmss
. @active_start_time_of_day è int, con il valore predefinito NULL
.
[ @active_end_time_of_day = ] active_end_time_of_day
Ora del giorno in cui il agente di merge smette di essere pianificato, formattato come HHmmss
. @active_end_time_of_day è int, con il valore predefinito .NULL
[ @active_start_date = ] active_start_date
Data in cui il agente di merge viene pianificato per la prima volta, formattato come yyyyMMdd
. @active_start_date è int, con un valore predefinito .NULL
[ @active_end_date = ] active_end_date
Data in cui il agente di merge smette di essere pianificato, formattato come yyyyMMdd
. @active_end_date è int, con un valore predefinito .NULL
[ @optional_command_line = ] N'optional_command_line'
Prompt dei comandi facoltativo da eseguire. @optional_command_line è nvarchar(4000), con 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 = ] N'description'
Breve descrizione di questa sottoscrizione di tipo merge. @description è nvarchar(255), con il valore predefinito NULL
. Questo valore viene visualizzato da Monitoraggio replica nella Friendly Name
colonna , che può essere utilizzato per ordinare le sottoscrizioni per una pubblicazione monitorata.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Specifica se la sottoscrizione può essere sincronizzata tramite Microsoft Windows Synchronization Manager. @enabled_for_syncmgr è nvarchar(5), con il valore predefinito false
.
- Se
false
, la sottoscrizione non è registrata con Synchronization Manager. - Se
true
, la sottoscrizione viene registrata con Synchronization Manager e può essere sincronizzata senza avviare SQL Server Management Studio.
[ @offloadagent = ] offloadagent
Specifica se è possibile o meno attivare l'agente in remoto. @offloadagent è bit, con il valore predefinito 0
.
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @offloadserver = ] N'offloadserver'
Nome di rete del server da utilizzare per l'attivazione remota dell'agente. @offloadserver è sysname, con il valore predefinito NULL
.
[ @use_interactive_resolver = ] N'use_interactive_resolver'
Consente la risoluzione interattiva dei conflitti per tutti gli articoli che la prevedono. @use_interactive_resolver è nvarchar(5), con il valore predefinito false
.
[ @merge_job_name = ] N'merge_job_name'
Questo parametro è deprecato e non può essere impostato. @merge_job_name è sysname, con un valore predefinito .NULL
[ @hostname = ] N'hostname'
Esegue l'override del valore restituito da HOST_NAME quando questa funzione viene utilizzata nella clausola WHERE di un filtro con parametri. @hostname è sysname, con 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 usa HOST_NAME in una clausola di filtro e si esegue l'override del valore HOST_NAME, potrebbe essere necessario convertire i tipi di dati usando CONVERT. Per altre informazioni sulle procedure consigliate per questo caso, vedere la sezione "Override del valore HOST_NAME()" nell'argomento Filtri con parametri - Filtri di riga con parametri.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_addmergesubscription
viene usato nella replica di tipo merge.
Quando sp_addmergesubscription
viene eseguito da un membro del ruolo predefinito del server sysadmin per creare una sottoscrizione push, il processo agente di merge viene creato in modo implicito ed eseguito con l'account del servizio SQL Server Agent. È consigliabile eseguire sp_addmergepushsubscription_agent e specificare le credenziali di un account Windows diverso specifico dell'agente per @job_login e @job_password. Per altre informazioni, vedere Modello di sicurezza dell'agente di replica.
Esempi
-- 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 [AdventureWorks2022];
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 db_owner ruolo predefinito del database possono eseguire sp_addmergesubscription
.