sp_addpullsubscription_agent (Transact-SQL)
Si applica a: SQL Server Istanza gestita di SQL di Azure
Aggiunge un nuovo processo pianificato dell'agente per la sincronizzazione di una sottoscrizione pull con una pubblicazione transazionale. Questa stored procedure viene eseguita nel database di sottoscrizione del Sottoscrittore.
Convenzioni relative alla sintassi Transact-SQL
Sintassi
sp_addpullsubscription_agent
[ @publisher = ] N'publisher'
[ , [ @publisher_db = ] N'publisher_db' ]
, [ @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' ]
[ , [ @distributor = ] N'distributor' ]
[ , [ @distribution_db = ] N'distribution_db' ]
[ , [ @distributor_security_mode = ] distributor_security_mode ]
[ , [ @distributor_login = ] N'distributor_login' ]
[ , [ @distributor_password = ] N'distributor_password' ]
[ , [ @optional_command_line = ] N'optional_command_line' ]
[ , [ @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 ]
[ , [ @distribution_jobid = ] distribution_jobid OUTPUT ]
[ , [ @encrypted_distributor_password = ] encrypted_distributor_password ]
[ , [ @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' ]
[ , [ @publication_type = ] publication_type ]
[ , [ @dts_package_name = ] N'dts_package_name' ]
[ , [ @dts_package_password = ] N'dts_package_password' ]
[ , [ @dts_package_location = ] N'dts_package_location' ]
[ , [ @reserved = ] N'reserved' ]
[ , [ @offloadagent = ] N'offloadagent' ]
[ , [ @offloadserver = ] N'offloadserver' ]
[ , [ @job_name = ] N'job_name' ]
[ , [ @job_login = ] N'job_login' ]
[ , [ @job_password = ] N'job_password' ]
[ ; ]
Argomenti
[ @publisher = ] N'publisher'
Nome del server di pubblicazione. @publisher è sysname, senza impostazione predefinita.
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.
[ @publisher_db = ] N'publisher_db'
Nome del database del server di pubblicazione. @publisher_db è sysname, con il valore predefinito NULL
. @publisher_db viene ignorato dai server di pubblicazione Oracle.
[ @publication = ] N'publication'
Nome della pubblicazione. @publication è sysname, senza impostazione predefinita.
[ @subscriber = ] N'subscriber'
Nome dell'istanza del Sottoscrittore o del nome del listener del gruppo di disponibilità se il database del sottoscrittore si trova in un gruppo di disponibilità.
@subscriber è sysname, con il valore predefinito NULL
.
Nota
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
Quando si esegue sp_addpullsubscription_agent
per un sottoscrittore che fa parte di un gruppo di disponibilità, impostare @subscriber sul nome del listener del gruppo di disponibilità. Se si esegue SQL Server 2016 (13.x) e versioni precedenti o SQL Server 2017 (14.x) prima di CU 16, la stored procedure viene eseguita senza restituire un errore, ma il parametro @subscriber nella replica agente di distribuzione non fa riferimento al nome del listener del gruppo di disponibilità. Il parametro viene creato con il nome del server sottoscrittore in cui viene eseguito il comando. Per modificare questo problema, aggiornare manualmente il parametro agente di distribuzione processo @subscriber con il valore del nome del listener del gruppo di disponibilità.
[ @subscriber_db = ] N'subscriber_db'
Nome del database di sottoscrizione. @subscriber_db è sysname, con un valore predefinito .NULL
Nota
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @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 NULL
.
0
specifica l'autenticazione di SQL Server1
specifica autenticazione di Windows
Nota
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script. L'agente di distribuzione si connette sempre al Sottoscrittore locale utilizzando l'autenticazione di Windows. Se per questo parametro viene specificato un valore diverso da NULL
o 1
, viene restituito un messaggio di avviso.
[ @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
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. 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.
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 del valore specificato da @publisher.
[ @distribution_db = ] N'distribution_db'
Nome del database di distribuzione. @distribution_db è sysname, con un valore predefinito .NULL
[ @distributor_security_mode = ] distributor_security_mode
Nota
Microsoft Entra ID era precedentemente conosciuto come Azure Active Directory (Azure AD).
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.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
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 è necessario se distributor_security_mode è impostato su 0
. @distributor_password è sysname, con il 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.
[ @optional_command_line = ] N'optional_command_line'
Prompt dei comandi facoltativo fornito al agente di distribuzione. Ad esempio, -DefinitionFile C:\Distdef.txt
o -CommitBatchSize 10
. @optional_command_line è nvarchar(4000), con un valore predefinito di una stringa vuota.
[ @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 (predefinito) |
Su richiesta |
4 |
Ogni giorno |
8 |
Settimanale |
16 |
Mensile |
32 |
Mensile relativa |
64 |
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 .1
[ @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 (predefinito) |
Una sola volta |
2 |
Secondo |
4 |
Minute |
8 |
Ore |
[ @frequency_subday_interval = ] frequency_subday_interval
Intervallo per @frequency_subday. @frequency_subday_interval è int, con il valore predefinito 1
.
[ @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 .0
[ @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 .0
[ @distribution_jobid = ] distribution_jobid OUTPUT
ID del agente di distribuzione per questo processo. @distribution_jobid è un parametro OUTPUT di tipo binary(16), con il valore predefinito NULL
.
[ @encrypted_distributor_password = ] encrypted_distributor_password
@encrypted_distributor_password è bit, con il valore predefinito 0
.
Nota
L'impostazione di @encrypted_distributor_password non è più supportata. Il tentativo di impostare questo parametro di bit su 1
genererà un errore.
[ @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.
[ @ftp_address = ] N'ftp_address'
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @ftp_port = ] ftp_port
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @ftp_login = ] N'ftp_login'
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @ftp_password = ] N'ftp_password'
Questo parametro è deprecato e viene mantenuto per la compatibilità con le versioni precedenti degli script.
[ @alt_snapshot_folder = ] N'alt_snapshot_folder'
Specifica la posizione della cartella alternativa per lo snapshot. @alt_snapshot_folder è nvarchar(255), con il valore predefinito NULL
.
[ @working_directory = ] N'working_directory'
Nome della directory di lavoro utilizzata per archiviare i file dei dati e di schema per la pubblicazione @working_directory è nvarchar(255), con il valore predefinito NULL
. Il nome deve essere specificato in formato UNC.
[ @use_ftp = ] N'use_ftp'
Specifica l'utilizzo di FTP anziché del protocollo normale per il recupero di snapshot. @use_ftp è nvarchar(5), con un valore predefinito .false
[ @publication_type = ] publication_type
Specifica il tipo di replica della pubblicazione. @publication_type è tinyint, con un valore predefinito .0
- Se
0
, la pubblicazione è un tipo di transazione. - Se
1
, la pubblicazione è un tipo di snapshot. - Se
2
, la pubblicazione è un tipo di merge.
[ @dts_package_name = ] N'dts_package_name'
Nome del pacchetto 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 del pacchetto, se è disponibile. @dts_package_password è sysname, con un valore predefinito NULL
, il che significa che una password non è presente nel pacchetto.
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 subscriber
. Il percorso del pacchetto può essere distributor
o subscriber
.
[ @reserved = ] N'reserved'
Identificato solo a scopo informativo. Non supportato. Non è garantita la compatibilità con le versioni future.
[ @offloadagent = ] N'offloadagent'
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. L'impostazione di @offloadagent su un valore diverso da false
genera un errore.
[ @offloadserver = ] N'offloadserver'
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. L'impostazione di @offloadserver su un valore diverso da false
genera 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 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.
[ @job_login = ] N'job_login'
Account di accesso per l'account di Windows con cui viene eseguito l'agente. @job_login è nvarchar(257), senza impostazione predefinita. Questo account di Windows viene sempre utilizzato per le connessioni dell'agente al Sottoscrittore.
[ @job_password = ] N'job_password'
Password per l'account di Windows con cui viene eseguito l'agente. @job_password è sysname, senza impostazione predefinita.
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.
Valori del codice restituito
0
(esito positivo) o 1
(errore).
Osservazioni:
sp_addpullsubscription_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".
-- Execute this batch at the Subscriber.
DECLARE @publication AS sysname;
DECLARE @publisher AS sysname;
DECLARE @publicationDB AS sysname;
SET @publication = N'AdvWorksProductTran';
SET @publisher = $(PubServer);
SET @publicationDB = N'AdventureWorks2022';
-- At the subscription database, create a pull subscription
-- to a transactional publication.
USE [AdventureWorks2022Replica]
EXEC sp_addpullsubscription
@publisher = @publisher,
@publication = @publication,
@publisher_db = @publicationDB;
-- Add an agent job to synchronize the pull subscription.
EXEC sp_addpullsubscription_agent
@publisher = @publisher,
@publisher_db = @publicationDB,
@publication = @publication,
@distributor = @publisher,
@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_addpullsubscription_agent
.