sp_addmergepullsubscription_agent (Transact-SQL)
Aggiunge un nuovo processo agente utilizzato per pianificare la sincronizzazione di una sottoscrizione pull con una pubblicazione di tipo merge. Questa stored procedure viene eseguita nel database di sottoscrizione del Sottoscrittore.
Sintassi
sp_addmergepullsubscription_agent [ [ @name = ] 'name' ]
, [ @publisher = ] 'publisher'
, [ @publisher_db = ] 'publisher_db'
, [ @publication =] 'publication'
[ , [ @publisher_security_mod e= ] publisher_security_mode ]
[ , [ @publisher_login = ] 'publisher_login' ]
[ , [ @publisher_password = ] 'publisher_password' ]
[ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
[ , [ @subscriber = ] 'subscriber' ]
[ , [ @subscriber_db = ] 'subscriber_db' ]
[ , [ @subscriber_security_mode = ] subscriber_security_mode ]
[ , [ @subscriber_login = ] 'subscriber_login' ]
[ , [ @subscriber_password= ] 'subscriber_password' ]
[ , [ @distributor = ] 'distributor' ]
[ , [ @distributor_security_mode = ] distributor_security_mode ]
[ , [ @distributor_login = ] 'distributor_login' ]
[ , [ @distributor_password = ] 'distributor_password' ]
[ , [ @encrypted_password = ] encrypted_password ]
[ , [ @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' ]
[ , [ @merge_jobid = ] merge_jobid ]
[ , [ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' ]
[ , [ @ftp_address = ] 'ftp_address' ]
[ , [ @ftp_port = ] ftp_port ]
[ , [ @ftp_login = ] 'ftp_login' ]
[ , [ @ftp_password = ] 'ftp_password' ]
[ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]
[ , [ @working_directory = ] 'working_directory' ]
[ , [ @use_ftp = ] 'use_ftp' ]
[ , [ @reserved = ] 'reserved' ]
[ , [ @use_interactive_resolver = ] 'use_interactive_resolver' ]
[ , [ @offloadagent = ] 'remote_agent_activation' ]
[ , [ @offloadserver = ] 'remote_agent_server_name']
[ , [ @job_name = ] 'job_name' ]
[ , [ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
[ , [ @use_web_sync = ] use_web_sync ]
[ , [ @internet_url = ] 'internet_url' ]
[ , [ @internet_login = ] 'internet_login' ]
[ , [ @internet_password = ] 'internet_password' ]
[ , [ @internet_security_mode = ] internet_security_mode ]
[ , [ @internet_timeout = ] internet_timeout ]
[ , [ @hostname = ] 'hostname' ]
[ , [ @job_login = ] 'job_login' ]
[ , [ @job_password = ] 'job_password' ]
Argomenti
[ @name = ] 'name'
Nome dell'agente. name è di tipo sysname e il valore predefinito è NULL.[ @publisher = ] 'publisher'
Nome del server di pubblicazione. publisher è di tipo sysname e non prevede alcun valore predefinito.[ @publisher_db = ] 'publisher_db'
Nome del database del server di pubblicazione. publisher_db è di tipo sysname e non prevede alcun valore predefinito.[ @publication = ] 'publication'
Nome della pubblicazione. publication è di tipo sysname e non prevede alcun valore predefinito.[ @publisher_security_mode = ] publisher_security_mode
Modalità di protezione da utilizzare quando ci si connette a un server di pubblicazione per la sincronizzazione. publisher_security_mode è di tipo int e il valore predefinito è 1. Se è 0, viene utilizzata l'autenticazione di SQL Server. Se è 1 viene utilizzata l'autenticazione di Windows.Nota sulla sicurezza Se possibile, utilizzare l'autenticazione di Windows.
[ @publisher_login = ] 'publisher_login'
Account di accesso da utilizzare quando ci si connette a un server di pubblicazione per la sincronizzazione. publisher_login è di tipo sysname e il valore predefinito è NULL.[ @publisher_password = ] 'publisher_password'
Password utilizzata per la connessione al server di pubblicazione. publisher_password è di tipo sysname e il valore predefinito è NULL.Nota sulla sicurezza Non utilizzare una password vuota. Utilizzare una password complessa. Se possibile, richiedere agli utenti di immettere le credenziali di protezione in fase di esecuzione. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.
[ @publisher_encrypted_password = ]publisher_encrypted_password
L'impostazione di publisher_encrypted_password non è più supportata. Se si tenta di impostare questo parametro di tipo bit su 1, verrà generato un errore.[ @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.[ @subscriber_security_mode = ] subscriber_security_mode
Modalità di protezione da utilizzare quando ci si connette a un Sottoscrittore per la sincronizzazione. subscriber_security_mode è di tipo int e il valore predefinito è 1. Se è 0, viene utilizzata l'autenticazione di SQL Server. Se è 1 viene utilizzata l'autenticazione di Windows.Nota
Questo parametro è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti. L'agente di merge si connette sempre al Sottoscrittore locale utilizzando l'autenticazione di Windows. Se si specifica un valore per questo parametro, viene restituito un messaggio di avviso ma il valore viene ignorato.
[ @subscriber_login = ] 'subscriber_login'
Account di accesso da utilizzare quando ci si connette a un Sottoscrittore per la sincronizzazione. subscriber_login è obbligatorio se subscriber_security_mode è impostato su 0. subscriber_login è di tipo sysname e il valore predefinito è NULL.Nota
Questo parametro è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti. Se si specifica un valore per questo parametro, viene restituito un messaggio di avviso, ma il valore viene ignorato.
[ @subscriber_password = ] 'subscriber_password'
Password del Sottoscrittore per l'autenticazione di SQL Server. subscriber_password è obbligatorio se subscriber_security_mode è impostato su 0. subscriber_password è di tipo sysname e il valore predefinito è NULL.Nota
Questo parametro è obsoleto ed è ancora disponibile per compatibilità con gli script di versioni precedenti. Se si specifica un valore per questo parametro, viene restituito un messaggio di avviso, ma il valore viene ignorato.
[ @distributor = ] 'distributor'
Nome del server di distribuzione. distributor è di tipo sysname e il valore predefinito è publisher, a indicare che il server di pubblicazione coincide con il server di distribuzione.[ @distributor_security_mode = ] distributor_security_mode
Modalità di protezione da utilizzare quando ci si connette a un server di distribuzione per la sincronizzazione. distributor_security_mode è di tipo int e il valore predefinito è 0. Se è 0, viene utilizzata l'autenticazione di SQL Server. 1 specifica l'autenticazione di Windows.Nota sulla sicurezza Se possibile, utilizzare l'autenticazione di Windows.
[ @distributor_login = ] 'distributor_login'
Account di accesso da utilizzare quando ci si connette a un server di distribuzione per la sincronizzazione. distributor_login è obbligatorio se distributor_security_mode è impostato su 0. distributor_login è di tipo sysname e il valore predefinito è NULL.[ @distributor_password = ] 'distributor_password'
Password del server di distribuzione. distributor_password è obbligatorio se distributor_security_mode è impostato su 0. distributor_password è di tipo sysname e il valore predefinito è NULL.Nota sulla sicurezza Non utilizzare una password vuota. Utilizzare una password complessa. Se possibile, richiedere agli utenti di immettere le credenziali di protezione in fase di esecuzione. Se è necessario archiviare le credenziali in un file script, è fondamentale proteggere il file per evitare accessi non autorizzati.
[ @encrypted_password = ] encrypted_password
L'impostazione di encrypted_password non è più supportata. Se si tenta di impostare questo parametro di tipo bit su 1, verrà generato un errore.[ @frequency_type = ] frequency_type
Frequenza per l'esecuzione pianificata dell'agente di merge. frequency_type è di tipo int e i possibili valori sono i seguenti.Valore
Descrizione
1
Una volta
2
Su richiesta
4
Giornaliera
8
Settimanale
16
Mensile
32
Mensile relativo
64
Avvio automatico
128
Periodica
NULL (predefinito)
Nota
Se si specifica il valore 64, l'agente di merge verrà eseguito in modalità continua, come se per l'agente fosse impostato il parametro -Continuous. Per ulteriori informazioni, vedere Agente merge repliche.
[ @frequency_interval = ] frequency_interval
Giorno o giorni in cui viene eseguito l'agente di merge. frequency_interval è di tipo int e 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
Data dell'agente di merge. Questo parametro viene utilizzato quando frequency_type è impostato su 32 (frequenza mensile relativa). frequency_relative_interval è di tipo int e 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
Frequenza di ripianificazione durante il periodo definito. frequency_subday è di tipo int e 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
Intervallo per frequency_subday. 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 specificato per l'agente di merge. optional_command_line è di tipo nvarchar(255) e il valore predefinito è ' '. Può essere utilizzato per rendere disponibili ulteriori parametri all'agente di merge, come nell'esempio seguente, in cui il timeout predefinito per le query viene aumentato a 600:@optional_command_line = N'-QueryTimeOut 600'
[ @merge_jobid = ] merge_jobid
Parametro di output per l'ID del processo. merge_jobid è di tipo binary(16) e il valore predefinito è NULL.[ @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 è true, la sottoscrizione viene registrata in Gestione sincronizzazione e può essere sincronizzata senza avviare SQL Server Management Studio.[ @ftp_address = ] 'ftp_address'
Disponibile per compatibilità con le versioni precedenti.[ @ftp_port = ] ftp_port
Disponibile per compatibilità con le versioni precedenti.[ @ftp_login = ] 'ftp_login'
Disponibile per compatibilità con le versioni precedenti.[ @ftp_password = ] 'ftp_password'
Disponibile per compatibilità con le versioni precedenti.[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'
Posizione da cui prelevare i file di snapshot. alternate_snapshot_folder è di tipo nvarchar(255) e il valore predefinito è NULL, che indica che i file di snapshot vengono prelevati dal percorso predefinito specificato dal server di pubblicazione.[ @working_directory = ] 'working_directory'
Nome della directory di lavoro utilizzata per l'archiviazione temporanea dei file di dati e dello schema della pubblicazione quando i file di snapshot vengono trasferiti tramite FTP. working_directory è di tipo nvarchar(255) e il valore predefinito è NULL.[ @use_ftp = ] 'use_ftp'
Specifica l'utilizzo di FTP anziché del protocollo utilizzato normalmente per il recupero degli snapshot. use_ftp è di tipo nvarchar(5) e il valore predefinito è FALSE.[ @reserved = ] 'reserved'
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.[ @use_interactive_resolver = ] 'use_interactive_resolver' ]
Specifica l'utilizzo del sistema di risoluzione interattivo per tutti gli articoli che supportano la risoluzione interattiva. use_interactive_resolver è di tipo nvarchar(5) e il valore predefinito è FALSE.[ @offloadagent = ] 'remote_agent_activation'
Nota
L'attivazione remota dell'agente non è più supportata. Questo parametro è supportato solo per compatibilità con gli script di versioni precedenti. Se si imposta remote_agent_activation su un valore diverso da false, verrà generato un errore.
[ @offloadserver = ] 'remote_agent_server_name'
Nota
L'attivazione remota dell'agente non è più supportata. Questo parametro è supportato solo per compatibilità con gli script di versioni precedenti. Se si imposta remote_agent_server_name su un valore diverso da NULL, verrà generato un errore.
[ @job_name = ] 'job_name' ]
Nome di un processo esistente dell'agente. job_name è di tipo sysname e il valore predefinito è NULL. Questo parametro deve essere specificato solo se la sottoscrizione verrà sincronizzata utilizzando un processo esistente anziché un processo nuovo (impostazione predefinita). Se non si è membro del ruolo predefinito del server sysadmin è necessario specificare job_login e job_password quando si specifica job_name.[ @dynamic_snapshot_location = ] 'dynamic_snapshot_location' ]
Percorso della cartella in cui vengono letti i file di snapshot se è necessario utilizzare uno snapshot dei dati filtrati. dynamic_snapshot_location è di tipo nvarchar(260) e il valore predefinito è NULL. Per ulteriori informazioni, vedere Filtri di riga con parametri.[ @use_web_sync = ] use_web_sync
Indica che la sincronizzazione Web è abilitata. use_web_sync è di tipo bit e il valore predefinito è 0. 1 specifica che la sottoscrizione pull può essere sincronizzata tramite Internet con HTTP.[ @internet_url = ] 'internet_url'
Percorso del listener per la replica (REPLISAPI.DLL) per la sincronizzazione Web. internet_url è di tipo nvarchar(260) e il valore predefinito è NULL. internet_url è un URL completo nel formato http://server.domain.com/directory/replisapi.dll. Se il server è configurato per l'attesa su una porta diversa dalla porta 80, è necessario specificare anche il numero di porta nel formato http://server.domain.com:portnumber/directory/replisapi.dll, dove portnumber rappresenta la porta.[ @internet_login = ] 'internet_login'
Account di accesso utilizzato dall'agente di merge per la connessione al server Web che ospita la sincronizzazione Web tramite l'autenticazione di base HTTP. internet_login è di tipo sysname e il valore predefinito è NULL.[ @internet_password = ] 'internet_password'
Password utilizzata dall'agente di merge per la connessione al server Web che ospita la sincronizzazione Web tramite l'autenticazione di base HTTP. internet_password è di tipo nvarchar(524) e il valore predefinito è NULL.Nota sulla sicurezza Non utilizzare una password vuota. Utilizzare una password complessa.
[ @internet_security_mode = ] internet_security_mode
Metodo di autenticazione utilizzato dall'agente di merge per la connessione al server Web durante la sincronizzazione Web tramite HTTPS. internet_security_mode è di tipo int e i possibili valori sono i seguenti.Valore
Descrizione
0
Viene utilizzata l'autenticazione di base.
1 (predefinito)
Viene utilizzata l'autenticazione integrata di Windows.
Nota
È consigliabile utilizzare l'autenticazione di base con la sincronizzazione Web. Per utilizzare la sincronizzazione Web è necessario stabilire una connessione SSL al server Web. Per ulteriori informazioni, vedere Configurazione della sincronizzazione tramite il Web.
[ @internet_timeout = ] internet_timeout
Periodo di tempo, espresso in secondi, trascorso il quale una richiesta di sincronizzazione Web scade. internet_timeout è di tipo int e il valore predefinito è 300 secondi.[ @hostname = ] 'hostname'
Sostituisce il valore di HOST_NAME() quando questa funzione viene utilizzata nella clausola WHERE di un filtro con parametri. hostname è di tipo sysname e il valore predefinito è NULL.[ @job_login = ] 'job_login'
Account di accesso di Windows utilizzato per l'esecuzione dell'agente. job_login è di tipo nvarchar(257) e non prevede alcun valore predefinito. Questo account di Windows viene sempre utilizzato per le connessioni dell'agente al Sottoscrittore e per le connessioni al server di distribuzione e al server di pubblicazione quando viene utilizzata l'autenticazione integrata di Windows.[ @job_password = ] 'job_password'
Password dell'account di Windows utilizzato per l'esecuzione dell'agente. job_password è di tipo sysname e non prevede alcun valore predefinito.Nota sulla sicurezza Non archiviare informazioni di autenticazione in file script. Per una protezione ottimale, i nomi e le password degli account di accesso devono essere forniti in fase di esecuzione.
Valori restituiti
0 (esito positivo) o 1 (esito negativo)
Osservazioni
La stored procedure sp_addmergepullsubscription_agent viene utilizzata nella replica di tipo merge e la funzionalità è simile a quella di sp_addsubsubscriber_agent.
Il modello di protezione dell'agente di replica è cambiato sostanzialmente da SQL Server 2000. Per un esempio di impostazione corretta delle impostazioni di protezione quando si esegue sp_addmergepullsubscription_agent, vedere Procedura: Creazione di una sottoscrizione pull (programmazione Transact-SQL della 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".
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2008R2';
SET @hostname = N'adventure-works\david8';
-- At the subscription database, create a pull subscription
-- to a merge publication.
USE [AdventureWorks2008R2Replica]
EXEC sp_addmergepullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addmergepullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@job_login = $(Login),
@job_password = $(Password),
@hostname = @hostname;
GO
Autorizzazioni
Solo i membri del ruolo predefinito del server sysadmin o del ruolo predefinito del database db_owner possono eseguire sp_addmergepullsubscription_agent.
Vedere anche