Condividi tramite


sp_addmergepullsubscription_agent (Transact-SQL)

Si applica a: SQL Server Istanza gestita di SQL di Azure

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.

Convenzioni relative alla sintassi Transact-SQL

Sintassi

sp_addmergepullsubscription_agent
    [ [ @name = ] N'name' ]
    , [ @publisher = ] N'publisher'
    , [ @publisher_db = ] N'publisher_db'
    , [ @publication = ] N'publication'
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @publisher_encrypted_password = ] publisher_encrypted_password ]
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @distributor = ] N'distributor' ]
    [ , [ @distributor_security_mode = ] distributor_security_mode ]
    [ , [ @distributor_login = ] N'distributor_login' ]
    [ , [ @distributor_password = ] N'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 = ] N'optional_command_line' ]
    [ , [ @merge_jobid = ] merge_jobid OUTPUT ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
    [ , [ @ftp_address = ] N'ftp_address' ]
    [ , [ @ftp_port = ] ftp_port ]
    [ , [ @ftp_login = ] N'ftp_login' ]
    [ , [ @ftp_password = ] N'ftp_password' ]
    [ , [ @alt_snapshot_folder = ] N'alt_snapshot_folder' ]
    [ , [ @working_directory = ] N'working_directory' ]
    [ , [ @use_ftp = ] N'use_ftp' ]
    [ , [ @reserved = ] N'reserved' ]
    [ , [ @use_interactive_resolver = ] N'use_interactive_resolver' ]
    [ , [ @offloadagent = ] N'offloadagent' ]
    [ , [ @offloadserver = ] N'offloadserver' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @dynamic_snapshot_location = ] N'dynamic_snapshot_location' ]
    [ , [ @use_web_sync = ] use_web_sync ]
    [ , [ @internet_url = ] N'internet_url' ]
    [ , [ @internet_login = ] N'internet_login' ]
    [ , [ @internet_password = ] N'internet_password' ]
    [ , [ @internet_security_mode = ] internet_security_mode ]
    [ , [ @internet_timeout = ] internet_timeout ]
    [ , [ @hostname = ] N'hostname' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
[ ; ]

Argomenti

[ @name = ] N'name'

Nome dell'agente. @name è sysname, con un valore predefinito .NULL

[ @publisher = ] N'publisher'

Nome del server di pubblicazione. @publisher è sysname, senza impostazione predefinita.

[ @publisher_db = ] N'publisher_db'

Nome del database del server di pubblicazione. @publisher_db è sysname, senza impostazione predefinita.

[ @publication = ] N'publication'

Nome della pubblicazione. @publication è sysname, senza impostazione predefinita.

[ @publisher_security_mode = ] publisher_security_mode

Modalità di sicurezza da utilizzare per la connessione a un server di pubblicazione durante la sincronizzazione. @publisher_security_mode è int, con un valore predefinito .1 I valori seguenti definiscono la modalità di sicurezza:

  • 0 specifica l'autenticazione di SQL Server.
  • 1specifica autenticazione di Windows.
  • 2 specifica l'autenticazione password di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.
  • 3 specifica l'autenticazione integrata di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.

Importante

Se possibile, usare l'autenticazione di Windows.

[ @publisher_login = ] N'publisher_login'

Account di accesso da utilizzare per la connessione a un server di pubblicazione durante la sincronizzazione. @publisher_login è sysname, con un valore predefinito .NULL

[ @publisher_password = ] N'publisher_password'

Password utilizzata per la connessione al server di pubblicazione. @publisher_password è sysname, con un valore predefinito .NULL

Importante

Non usare una password vuota. Usare una password complessa. Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza 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 @publisher_encrypted_password non è più supportata. Il tentativo di impostare questo parametro di bit su 1 restituisce un errore.

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

[ @subscriber_security_mode = ] subscriber_security_mode

Modalità di sicurezza da utilizzare per la connessione a un Sottoscrittore durante la sincronizzazione. @subscriber_security_mode è int, con il valore predefinito 1. Se 0, specifica l'autenticazione di SQL Server. Se 1, specifica l'autenticazione di Windows.

Nota

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. Se viene specificato un valore per questo parametro, viene visualizzato un messaggio di avviso, ma il valore viene ignorato.

[ @subscriber_login = ] N'subscriber_login'

Account di accesso del Sottoscrittore da utilizzare per la connessione a un Sottoscrittore durante la sincronizzazione. @subscriber_login è sysname, con un valore predefinito .NULL @subscriber_login è necessario se subscriber_security_mode è impostato su 0.

Nota

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. Se viene specificato un valore per questo parametro, viene visualizzato un messaggio di avviso, ma il valore viene ignorato.

[ @subscriber_password = ] N'subscriber_password'

Password del Sottoscrittore per l'autenticazione di SQL Server. @subscriber_password è sysname, con un valore predefinito .NULL @subscriber_password è necessario se @subscriber_security_mode è impostato su 0.

Nota

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. Se viene specificato un valore per questo parametro, viene visualizzato un messaggio di avviso, ma il valore viene ignorato.

[ @distributor = ] N'distributor'

Nome del server di distribuzione. @distributor è sysname, con un valore predefinito di @publisher, ovvero il server di pubblicazione è anche il server di distribuzione.

[ @distributor_security_mode = ] distributor_security_mode

Modalità di sicurezza da utilizzare per la connessione a un server di distribuzione durante la sincronizzazione. @distributor_security_mode è int, con il valore predefinito 1. I valori seguenti definiscono la modalità di sicurezza:

  • 0 specifica l'autenticazione di SQL Server.
  • 1specifica autenticazione di Windows.
  • 2 specifica l'autenticazione password di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.
  • 3 specifica l'autenticazione integrata di Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.
  • 4 specifica l'autenticazione del token Microsoft Entra, a partire da SQL Server 2022 (16.x) CU 6.

Importante

Se possibile, usare l'autenticazione di Windows.

[ @distributor_login = ] N'distributor_login'

Account di accesso del server di distribuzione da utilizzare per la connessione a un server di distribuzione durante la sincronizzazione. @distributor_login è sysname, con un valore predefinito .NULL @distributor_login è necessario se @distributor_security_mode è impostato su 0.

[ @distributor_password = ] N'distributor_password'

Password per il server di distribuzione. @distributor_password è sysname, con il valore predefinito NULL. @distributor_password è necessario se @distributor_security_mode è impostato su 0.

Importante

Non usare una password vuota. Usare una password complessa. Se possibile, richiedere agli utenti di immettere le credenziali di sicurezza 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 @encrypted_password non è più supportata. Il tentativo di impostare questo parametro di bit su 1 restituisce un errore.

[ @frequency_type = ] frequency_type

Valore che indica quando viene eseguito il agente di merge. @frequency_type è int e può essere uno di questi valori.

Valore Descrizione
1 Singola occorrenza
2 Su richiesta
4 Ogni giorno
8 Settimanale
16 Mensile
32 Mensile relativa
64 Avvio automatico
128 Ricorrente
NULL (predefinito)

Nota

Se si specifica un valore, 64 il agente di merge viene eseguito in modalità continua. Corrisponde all'impostazione del -Continuous parametro per l'agente. Per altre informazioni, vedere Replication Merge Agent.

[ @frequency_interval = ] frequency_interval

Giorno o giorni in cui viene eseguito l'agente di merge. @frequency_interval è int, con un valore predefinito , NULLe può essere uno di questi valori.

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

Data del agente di merge. Questo parametro viene usato quando @frequency_type è impostato su 32 (relativo mensile). @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

Frequenza con cui riprogrammare durante il periodo definito. @frequency_subday è int e può essere uno di questi valori.

Valore Descrizione
1 Una sola volta
2 Secondo
4 Minute
8 Ore
NULL (predefinito)

[ @frequency_subday_interval = ] frequency_subday_interval

Intervallo per @frequency_subday. @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 fornito al agente di merge. @optional_command_line è nvarchar(255), con un valore predefinito di una stringa vuota.

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 OUTPUT

Parametro di output per l'ID processo. @merge_jobid è un parametro OUTPUT di tipo binary(16), con il valore predefinito NULL.

[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'

Specifica se la sottoscrizione può essere sincronizzata tramite Gestione sincronizzazione Windows. @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.

[ @ftp_address = ] N'ftp_address'

Disponibile solo per compatibilità con le versioni precedenti.

[ @ftp_port = ] ftp_port

Disponibile solo per compatibilità con le versioni precedenti.

[ @ftp_login = ] N'ftp_login'

Disponibile solo per compatibilità con le versioni precedenti.

[ @ftp_password = ] N'ftp_password'

Disponibile solo per compatibilità con le versioni precedenti.

[ @alt_snapshot_folder = ] N'alt_snapshot_folder'

Posizione da cui prelevare i file di snapshot. @alt_snapshot_folder è nvarchar(255), con il valore predefinito NULL. Se NULL, i file di snapshot verranno prelevati dal percorso predefinito specificato dal server di pubblicazione.

[ @working_directory = ] N'working_directory'

Nome della directory di lavoro utilizzata per archiviare temporaneamente i file di dati e schema per la pubblicazione quando ftp viene utilizzato per trasferire i file di snapshot. @working_directory è nvarchar(255), con il valore predefinito NULL.

[ @use_ftp = ] N'use_ftp'

Specifica l'utilizzo di FTP anziché del protocollo utilizzato normalmente per il recupero degli snapshot. @use_ftp è nvarchar(5), con un valore predefinito .false

[ @reserved = ] N'reserved'

Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.

[ @use_interactive_resolver = ] N'use_interactive_resolver'

Specifica l'utilizzo del sistema di risoluzione interattivo per tutti gli articoli che supportano la risoluzione interattiva. @use_interactive_resolver è nvarchar(5), con il valore predefinito false.

[ @offloadagent = ] N'offloadagent'

Nota

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. L'impostazione di remote_agent_activation su un valore diverso da false genera un errore.

[ @offloadserver = ] N'offloadserver'

Nota

Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. L'impostazione di remote_agent_server_name su qualsiasi valore non NULL genererà un errore.

[ @job_name = ] N'job_name'

Nome di un processo dell'agente esistente. @job_name è sysname, con il valore predefinito NULL. Questo parametro viene specificato solo quando la sottoscrizione verrà sincronizzata mediante un processo esistente anziché un nuovo processo creato (impostazione predefinita). Se non si è membri del ruolo predefinito del server sysadmin , è necessario specificare @job_login e @job_password quando si specifica @job_name.

[ @dynamic_snapshot_location = ] N'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 è nvarchar(260), con il valore predefinito NULL. Per altre informazioni, vedere Filtri con parametri - Filtri di riga con parametri.

[ @use_web_sync = ] use_web_sync

Indica che la sincronizzazione Web è abilitata. @use_web_sync è bit, con un valore predefinito .0 1 specifica che la sottoscrizione pull può essere sincronizzata tramite Internet tramite HTTP.

[ @internet_url = ] N'internet_url'

Percorso del listener di replica (REPLISAPI.DLL) per la sincronizzazione Web. @internet_url è nvarchar(260), con un 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 = ] N'internet_login'

Account di accesso utilizzato dal agente di merge per la connessione al server Web che ospita la sincronizzazione Web tramite l'autenticazione di base HTTP. @internet_login è sysname, con un valore predefinito .NULL

[ @internet_password = ] N'internet_password'

Password utilizzata dal agente di merge per la connessione al server Web che ospita la sincronizzazione Web tramite l'autenticazione di base HTTP. @internet_password è nvarchar(524), con il valore predefinito NULL.

Importante

Non usare una password vuota. Usare una password complessa.

[ @internet_security_mode = ] internet_security_mode

Metodo di autenticazione utilizzato dal agente di merge durante la connessione al server Web durante la sincronizzazione Web tramite HTTPS. @internet_security_mode è int e può essere uno di questi valori.

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 per la sincronizzazione Web. Per usare la sincronizzazione Web, è necessario stabilire una connessione TLS al server Web. Per altre informazioni, vedere Configure Web Synchronization.

[ @internet_timeout = ] internet_timeout

Intervallo di tempo, in secondi, prima della scadenza di una richiesta di sincronizzazione tramite il Web. @internet_timeout è int, con un valore predefinito di 300 secondi.

[ @hostname = ] N'hostname'

Esegue l'override del valore di HOST_NAME() quando questa funzione viene utilizzata nella WHERE clausola di un filtro con parametri. @hostname è sysname, con il valore predefinito NULL.

[ @job_login = ] N'job_login'

Account di accesso per l'account di Windows con cui viene eseguito l'agente. @job_login è nvarchar(257), con il valore predefinito NULL. 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 = ] N'job_password'

Password per l'account di Windows con cui viene eseguito l'agente. @job_password è sysname, con il valore predefinito NULL.

Attenzione

Non archiviare le informazioni di autenticazione nei file di script. Per una sicurezza ottimale, i nomi e le password degli account di accesso dovrebbero essere passati in fase di esecuzione.

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_addmergepullsubscription_agent viene usato nella replica di tipo merge e usa funzionalità simili a sp_addpullsubscription_agent.

Per un esempio di come specificare correttamente le impostazioni di sicurezza durante l'esecuzione sp_addmergepullsubscription_agentdi , vedere Creare una sottoscrizione pull.

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".

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

-- At the subscription database, create a pull subscription 
-- to a merge publication.
USE [AdventureWorks2022Replica]
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 db_owner ruolo predefinito del database possono eseguire sp_addmergepullsubscription_agent.