Condividi tramite


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.

Icona di collegamento a un argomentoConvenzioni della sintassi Transact-SQL

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 occorrenza 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 è 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 Microsoft SQL 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 è deprecato 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'
    Il parametro @merge_job_name è deprecato e non può essere impostato. Il parametro merge_job_name è di tipo sysname, con un valore predefinito NULL.

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

    Nota importanteImportante

    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 sicurezza 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'AdventureWorks2008R2Replica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2008R2]
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.