sp_addpushsubscription_agent (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Aggiunge un nuovo processo di agente pianificato per sincronizzare una sottoscrizione push di una pubblicazione transazionale. 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 forniti 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 ulteriori informazioni, vedere Configurare il motore di database di SQL Server per la crittografia delle connessioni.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_addpushsubscription_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' ]
[ , [ @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 ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ , [ @distribution_job_name = ] N'distribution_job_name' ]
[ , [ @publisher = ] N'publisher' ]
[ , [ @subscriber_provider = ] N'subscriber_provider' ]
[ , [ @subscriber_datasrc = ] N'subscriber_datasrc' ]
[ , [ @subscriber_location = ] N'subscriber_location' ]
[ , [ @subscriber_provider_string = ] N'subscriber_provider_string' ]
[ , [ @subscriber_catalog = ] N'subscriber_catalog' ]
[ ; ]
Argomenti
[ @publication = ] N'publication'
Nome della pubblicazione. @publication è sysname, senza impostazione predefinita.
[ @subscriber = ] N'subscriber'
Nome dell'istanza del Sottoscrittore o nome del listener del gruppo di disponibilità se il database del sottoscrittore fa parte di un gruppo di disponibilità. @subscriber è sysname, con il valore predefinito NULL
.
Nota
Il nome del server può essere specificato come <Hostname>,<PortNumber>
per un'istanza predefinita o <Hostname>\<InstanceName>,<PortNumber>
per un'istanza denominata. Specificare il numero di porta per la connessione quando SQL Server viene distribuito in Linux o Windows con una porta personalizzata e il servizio browser è disabilitato. L'uso di numeri di porta personalizzati per il server di distribuzione remoto si applica a SQL Server 2019 (15.x) e versioni successive.
[ @subscriber_db = ] N'subscriber_db'
Nome del database di sottoscrizione. @subscriber_db è sysname, con un valore predefinito .NULL
Per un Sottoscrittore non SQL Server, specificare il valore (destinazione predefinita) per subscriber_db.
[ @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.1
specifica autenticazione di Windows.2
specifica l'autenticazione della 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
Per le sottoscrizioni ad aggiornamento in coda, usare l'autenticazione di SQL Server per le connessioni ai Sottoscrittori e specificare un account diverso per la connessione a ogni Sottoscrittore. Per tutte le altre sottoscrizioni utilizzare 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_password = ] N'subscriber_password'
Password del Sottoscrittore. subscriber_password è necessario se subscriber_security_mode è impostato su 0
. @subscriber_password è sysname, con un valore predefinito .NULL
Se viene usata una password del sottoscrittore, viene crittografata automaticamente.
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 con cui viene eseguito l'agente. In Istanza gestita di SQL di Azure usare un account SQL Server. @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 quando si utilizza l'autenticazione integrata di Windows.
[ @job_password = ] N'job_password'
Password per l'account 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 usando un processo esistente, anziché un processo appena 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.
[ @frequency_type = ] frequency_type
Frequenza con cui pianificare il agente di distribuzione. @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 (predefinito) |
Avvio automatico |
128 |
Ricorrente |
Nota
Se si specifica un valore, 64
il agente di distribuzione viene eseguito in modalità continua. Corrisponde all'impostazione del -Continuous
parametro per l'agente. Per altre informazioni, vedere Replication Distribution Agent.
[ @frequency_interval = ] frequency_interval
Valore da applicare alla frequenza impostata da @frequency_type. @frequency_interval è int, con il valore predefinito 1
.
[ @frequency_relative_interval = ] frequency_relative_interval
Data del agente di distribuzione. 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 (predefinito) |
First |
2 |
Secondo |
4 |
Terza |
8 |
Quarta |
16 |
Ultimo |
[ @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
Specifica la 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 (predefinito) |
Minute |
8 |
Ore |
[ @frequency_subday_interval = ] frequency_subday_interval
Intervallo per @frequency_subday. @frequency_subday_interval è int, con il valore predefinito 5
.
[ @active_start_time_of_day = ] active_start_time_of_day
Ora del giorno in cui il agente di distribuzione 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 distribuzione 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 distribuzione 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 distribuzione smette di essere pianificato, formattato come yyyyMMdd
. @active_end_date è int, con un valore predefinito .99991231
[ @dts_package_name = ] N'dts_package_name'
Specifica il nome del pacchetto Data Transformation Services (DTS). @dts_package_name è sysname, con un valore predefinito .NULL
Per specificare, ad esempio, il nome di pacchetto DTSPub_Package
, il parametro deve essere @dts_package_name = N'DTSPub_Package'
.
[ @dts_package_password = ] N'dts_package_password'
Password necessaria per l'esecuzione del pacchetto. @dts_package_password è sysname, con un valore predefinito , NULL
il che significa che il pacchetto non ha password.
Nota
È necessario specificare una password se si specifica @dts_package_name .
[ @dts_package_location = ] N'dts_package_location'
Specifica la posizione del pacchetto. @dts_package_location è nvarchar(12), con il valore predefinito distributor
. Il percorso del pacchetto può essere distributor
o subscriber
.
[ @enabled_for_syncmgr = ] N'enabled_for_syncmgr'
Specifica se la sottoscrizione può essere sincronizzata tramite Microsoft Synchronization Manager. @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.
[ @distribution_job_name = ] N'distribution_job_name'
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.
[ @publisher = ] N'publisher'
Nome del server di pubblicazione. @publisher è sysname, con un valore predefinito .NULL
[ @subscriber_provider = ] N'subscriber_provider'
Identificatore programmatico univoco (PROGID) con cui è registrato il provider OLE DB per l'origine dati non SQL Server. @subscriber_provider è sysname, con il valore predefinito NULL
. @subscriber_provider deve essere univoco per il provider OLE DB installato nel server di distribuzione. @subscriber_provider è supportato solo per i Sottoscrittori non SQL Server.
[ @subscriber_datasrc = ] N'subscriber_datasrc'
Nome dell'origine dati riconosciuto dal provider OLE DB.@subscriber_datasrc è nvarchar(4000), con il valore predefinito NULL
. @subscriber_datasrc viene passato come DBPROP_INIT_DATASOURCE
proprietà per inizializzare il provider OLE DB. @subscriber_datasrc è supportato solo per i Sottoscrittori non SQL Server.
[ @subscriber_location = ] N'subscriber_location'
Percorso del database riconosciuto dal provider OLE DB. @subscriber_location è nvarchar(4000), con il valore predefinito NULL
. @subscriber_location viene passato come DBPROP_INIT_LOCATION
proprietà per inizializzare il provider OLE DB. @subscriber_location è supportato solo per i Sottoscrittori non SQL Server.
[ @subscriber_provider_string = ] N'subscriber_provider_string'
Stringa di connessione specifica del provider OLE DB che identifica l'origine dati. @subscriber_provider_string è nvarchar(4000), con il valore predefinito NULL
. @subscriber_provider_string viene passato a IDataInitialize o impostato come DBPROP_INIT_PROVIDERSTRING
proprietà per inizializzare il provider OLE DB. @subscriber_provider_string è supportato solo per i Sottoscrittori non SQL Server.
[ @subscriber_catalog = ] N'subscriber_catalog'
Catalogo da utilizzare per stabilire una connessione al provider OLE DB. @subscriber_catalog è sysname, con un valore predefinito .NULL
@subscriber_catalog viene passato come DBPROP_INIT_CATALOG
proprietà per inizializzare il provider OLE DB. @subscriber_catalog è supportato solo per sottoscrittori non SQL Server.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_addpushsubscription_agent
viene usato nella replica snapshot e nella replica transazionale.
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;
SET @publication = N'AdvWorksProductTran';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorks2022Replica';
--Add a push subscription to a transactional publication.
USE [AdventureWorks2022]
EXEC sp_addsubscription
@publication = @publication,
@subscriber = @subscriber,
@destination_db = @subscriptionDB,
@subscription_type = N'push';
--Add an agent job to synchronize the push subscription.
EXEC sp_addpushsubscription_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_addpushsubscription_agent
.
Contenuto correlato
- Creare una sottoscrizione push
- Creare una sottoscrizione per un Sottoscrittore non SQL Server
- Subscribe to Publications
- Stored procedure per la replica (Transact-SQL)
- sp_addsubscription (Transact-SQL)
- sp_changesubscription (Transact-SQL)
- sp_dropsubscription (Transact-SQL)
- sp_helpsubscription (Transact-SQL)