sp_addmergepushsubscription_agent (Transact-SQL)

Si applica a:SQL ServerIstanza gestita di SQL di Azure

Aggiunge un nuovo processo dell'agente utilizzato per la pianificazione della sincronizzazione di una sottoscrizione push in una replica di tipo merge. Questa stored procedure viene eseguita nel database di pubblicazione del server di pubblicazione.

Importante

Quando si configura un server di pubblicazione con un server di distribuzione remoto, i valori specificati per tutti i parametri, inclusi job_login e job_password, vengono inviati al server di distribuzione come testo normale. È consigliabile crittografare la connessione tra il server di pubblicazione e il server di distribuzione remoto prima di eseguire questa stored procedure. Per altre informazioni, vedere Configurare l'motore di database di SQL Server per la crittografia delle connessioni.

Convenzioni di sintassi Transact-SQL

Nota

Microsoft Entra ID era precedentemente noto come Azure Active Directory (Azure AD).

Sintassi

sp_addmergepushsubscription_agent
    [ @publication = ] N'publication'
    [ , [ @subscriber = ] N'subscriber' ]
    [ , [ @subscriber_db = ] N'subscriber_db' ]
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]
    [ , [ @subscriber_login = ] N'subscriber_login' ]
    [ , [ @subscriber_password = ] N'subscriber_password' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_password' ]
    [ , [ @job_login = ] N'job_login' ]
    [ , [ @job_password = ] N'job_password' ]
    [ , [ @job_name = ] N'job_name' ]
    [ , [ @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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Argomenti

[ @publication = ] N'publication'

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

[ @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 è smallint, 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.

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

[ @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. Se viene usata una password del sottoscrittore, viene crittografata automaticamente.

Importante

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_security_mode = ] publisher_security_mode

Modalità di sicurezza da utilizzare per la connessione a un server di pubblicazione durante la sincronizzazione. @publisher_security_mode è smallint, 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.

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

[ @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 server di distribuzione e per le connessioni al Sottoscrittore e al server di pubblicazione in caso di utilizzo dell'autenticazione integrata di Windows.

[ @job_password = ] N'job_password'

Password per l'account di Windows con cui viene eseguito l'agente. @job_password è sysname, senza impostazione predefinita.

Importante

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.

[ @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 viene sincronizzata utilizzando un processo esistente anziché un nuovo processo (impostazione predefinita). Se non si è membri del ruolo predefinito del server sysadmin, è necessario specificare job_login e job_password quando si specifica @job_name.

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

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

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 dei valori seguenti.

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

[ @frequency_subday = ] frequency_subday

Frequenza con cui riprogrammare durante il periodo definito. @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

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

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

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

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

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

Valori del codice restituito

0 (esito positivo) o 1 (errore).

Osservazioni:

sp_addmergepushsubscription_agent viene usato nella replica di tipo merge e usa funzionalità simili a sp_addpushsubscription_agent.

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