Condividi tramite


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 Server
  • 1specifica 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.
  • 1specifica 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.