Condividi tramite


sp_addmergesubscription (Transact-SQL)

Data aggiornamento: 15 settembre 2007

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 è push, viene aggiunta una sottoscrizione push e l'agente di merge viene aggiunto al server di distribuzione. Se è 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 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 per la sottoscrizione. sync_typeè di tipo nvarchar(15) e il valore predefinito è automatic. Può essere automatic o none. Se è automatic, vengono innanzitutto trasferiti nel Sottoscrittore lo schema e i dati iniziali per le tabelle pubblicate. Se è none, viene presupposto che il Sottoscrittore includa già lo schema e i dati iniziali per le tabelle pubblicate. Le tabelle e i dati di sistema vengono sempre trasferiti.

    [!NOTA] Non è consigliabile specificare un valore di nessuno. 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 YYYYMMDD. 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 YYYYMMDD. active_end_date è di tipo int e il valore predefinito è NULL.
  • [ @optional_command_line=] 'optional_command_line'
    Riga di comando facoltativa 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'
    Indica se è possibile o meno sincronizzare la sottoscrizione 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 è 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 è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti.

  • [ @offloadserver= ] 'remote_agent_server_name'
    Nome di rete del server da utilizzare per l'attivazione remota degli agenti. remote_agent_server_nameè di tipo sysname e il valore predefinito è NULL.
  • [ @use_interactive_resolver= ] 'use_interactive_resolver'
    Consente l'utilizzo del sistema di risoluzione interattivo per la risoluzione dei conflitti di tutti gli articoli che supportano la risoluzione interattiva. 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 sysnamee 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.

    ms187717.note(it-it,SQL.90).gifImportante:
    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.

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.

Autorizzazioni

Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_addmergesubscription.

Valori restituiti

0 (esito positivo) o 1 (esito negativo)

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

Vedere anche

Riferimento

sp_changemergesubscription (Transact-SQL)
sp_dropmergesubscription (Transact-SQL)
sp_helpmergesubscription (Transact-SQL)

Altre risorse

Procedura: Creazione di una sottoscrizione push (programmazione Transact-SQL della replica)
Procedura: Creazione di una sottoscrizione pull (programmazione Transact-SQL della replica)
Risoluzione dei conflitti interattiva
Sottoscrizione delle pubblicazioni

Guida in linea e informazioni

Assistenza su SQL Server 2005

Cronologia modifiche

Versione Cronologia

15 settembre 2007

Nuovo contenuto:
  • L'aggiunta di una nota che specifica un valore di nessuno per il il parametro@sync_type non è consigliata.