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 di 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 Giornaliera
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 Last
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.