sp_addpullsubscription_agent (Transact-SQL)

S’applique à :SQL ServerAzure SQL Managed Instance

Ajoute un nouveau travail de l'Agent planifié, utilisé pour synchroniser un abonnement par extraction de données (pull) avec une publication transactionnelle. Cette procédure stockée est exécutée sur la base de données d'abonnement de l'Abonné.

Conventions de la syntaxe Transact-SQL

Syntaxe

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' ]
[ ; ]

Arguments

[ @publisher = ] N’publisher'

Nom du serveur de publication. @publisher est sysname, sans valeur par défaut.

Remarque

Le nom du serveur peut être spécifié en tant que <Hostname>,<PortNumber>. Spécifiez le numéro de port de votre connexion lorsque SQL Server est déployé sur Linux ou Windows avec un port personnalisé et que le service de navigateur est désactivé. L’utilisation de numéros de port personnalisés pour le serveur de distribution distant s’applique à SQL Server 2019 (15.x) et versions ultérieures.

[ @publisher_db = ] N’publisher_db'

Nom de la base de données du serveur de publication. @publisher_db est sysname, avec la valeur par défaut NULL. @publisher_db est ignoré par les serveurs de publication Oracle.

[ @publication = ] N’publication'

Nom de la publication. @publication est sysname, sans valeur par défaut.

[ @subscriber = ] N’subscriber'

Nom de l’instance de l’Abonné ou du nom de l’écouteur du groupe de disponibilité si la base de données de l’abonné se trouve dans un groupe de disponibilité. @subscriber est sysname, avec la valeur par défaut NULL.

Remarque

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

Lors de l’exécution sp_addpullsubscription_agent d’un abonné faisant partie d’un groupe de disponibilité, définissez @subscriber sur le nom de l’écouteur du groupe de disponibilité. Si vous exécutez SQL Server 2016 (13.x) et les versions antérieures, ou SQL Server 2017 (14.x) avant CU 16, la procédure stockée s’exécute sans retourner d’erreur, mais le paramètre @subscriber sur la réplication Agent de distribution ne référence pas le nom de l’écouteur du groupe de disponibilité ; le paramètre est créé avec le nom du serveur abonné sur lequel la commande est exécutée. Pour modifier ce problème, mettez à jour manuellement le paramètre Agent de distribution travail@subscriber avec la valeur du nom de l’écouteur du groupe de disponibilité.

[ @subscriber_db = ] N’subscriber_db'

Nom de la base de données d’abonnement. @subscriber_db est sysname, avec la valeur par défaut NULL.

Remarque

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @subscriber_security_mode = ] subscriber_security_mode

Mode de sécurité à utiliser lors de la connexion à un Abonné lors de la synchronisation. @subscriber_security_mode est int, avec la valeur par défaut NULL.

  • 0 spécifie l’authentification SQL Server
  • 1spécifie Authentification Windows

Remarque

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. L'Agent de distribution se connecte toujours à l'Abonné local à l'aide de l'authentification Windows. Si une valeur autre que NULL ou 1 est spécifiée pour ce paramètre, un message d’avertissement est retourné.

[ @subscriber_login = ] N’subscriber_login'

Connexion de l’Abonné à utiliser lors de la connexion à un Abonné lors de la synchronisation. @subscriber_login est sysname, avec la valeur par défaut NULL.

Remarque

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Si une valeur est précisée pour ce paramètre, un message d'avertissement est retourné mais la valeur reste ignorée.

[ @subscriber_password = ] N’subscriber_password'

Mot de passe de l’Abonné. subscriber_password est obligatoire si subscriber_security_mode a la valeur 0. @subscriber_password est sysname, avec la valeur par défaut NULL. Si un mot de passe d’abonné est utilisé, il est automatiquement chiffré.

Remarque

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Si une valeur est précisée pour ce paramètre, un message d'avertissement est retourné mais la valeur reste ignorée.

[ @distributor = ] N’distributor'

Nom du serveur de distribution. @distributor est sysname, avec une valeur par défaut spécifiée par @publisher.

[ @distribution_db = ] N’distribution_db'

Nom de la base de données de distribution. @distribution_db est sysname, avec la valeur par défaut NULL.

[ @distributor_security_mode = ] distributor_security_mode

Remarque

L’ID Microsoft Entra était précédemment appelé Azure Active Directory (Azure AD).

Mode de sécurité à utiliser lors de la connexion à un serveur de distribution lors de la synchronisation. @distributor_security_mode est int, avec la valeur par défaut 1. Les valeurs suivantes définissent le mode de sécurité :

  • 0 spécifie l’authentification SQL Server.
  • 1spécifie Authentification Windows.
  • 2 spécifie l’authentification par mot de passe Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.
  • 3 spécifie l’authentification intégrée Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.
  • 4 spécifie l’authentification par jeton Microsoft Entra à partir de SQL Server 2022 (16.x) CU 6.

Important

Lorsque c'est possible, utilisez l'authentification Windows.

[ @distributor_login = ] N’distributor_login'

Connexion du serveur de distribution à utiliser lors de la connexion à un serveur de distribution lors de la synchronisation. @distributor_login est sysname, avec la valeur par défaut NULL. @distributor_login est obligatoire si @distributor_security_mode a la valeur 0.

[ @distributor_password = ] N’distributor_password'

Mot de passe du serveur de distribution. distributor_password est nécessaire si distributor_security_mode a la valeur 0. @distributor_password est sysname, avec la valeur par défaut NULL.

Important

N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort. Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

[ @optional_command_line = ] N’optional_command_line'

Invite de commandes facultative fournie au Agent de distribution. Par exemple, -DefinitionFile C:\Distdef.txt ou -CommitBatchSize 10. @optional_command_line est nvarchar(4000), avec une valeur par défaut d’une chaîne vide.

[ @frequency_type = ] frequency_type

Fréquence à laquelle planifier le Agent de distribution. @frequency_type est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Ponctuelle
2 (valeur par défaut) À la demande
4 Quotidiennement
8 Hebdomadaire
16 Mensuelle
32 Mensuelle relative
64 Autostart
128 Récurrent

Remarque

La spécification d’une valeur des causes de l’exécution du 64 Agent de distribution en mode continu. Cela correspond à la définition du -Continuous paramètre de l’agent. Pour plus d'informations, consultez Replication Distribution Agent.

[ @frequency_interval = ] frequency_interval

Valeur à appliquer à la fréquence définie par @frequency_type. @frequency_interval est int, avec la valeur par défaut 1.

[ @frequency_relative_interval = ] frequency_relative_interval

Date du Agent de distribution. Ce paramètre est utilisé lorsque @frequency_type est défini 32 sur (relatif mensuel). @frequency_relative_interval est int et peut être l’une des valeurs suivantes.

Valeur Description
1 (valeur par défaut) Premier
2 Second
4 Third
8 Quatrième
16 Dernier

[ @frequency_recurrence_factor = ] frequency_recurrence_factor

Facteur de périodicité utilisé par @frequency_type. @frequency_recurrence_factor est int, avec la valeur par défaut 1.

[ @frequency_subday = ] frequency_subday

Spécifie la fréquence à replanifier pendant la période définie. @frequency_subday est int et peut être l’une des valeurs suivantes.

Valeur Description
1 (valeur par défaut) Une fois
2 Second
4 Minute
8 Heure

[ @frequency_subday_interval = ] frequency_subday_interval

Intervalle de @frequency_subday. @frequency_subday_interval est int, avec la valeur par défaut 1.

[ @active_start_time_of_day = ] active_start_time_of_day

Heure du jour où la Agent de distribution est planifiée pour la première fois, mise en forme comme HHmmss. @active_start_time_of_day est int, avec la valeur par défaut 0.

[ @active_end_time_of_day = ] active_end_time_of_day

Heure du jour où le Agent de distribution cesse d’être planifié, mis en forme comme HHmmss. @active_end_time_of_day est int, avec la valeur par défaut 0.

[ @active_start_date = ] active_start_date

Date à laquelle le Agent de distribution est planifié pour la première fois, mis en forme en tant que yyyyMMdd. @active_start_date est int, avec une valeur par défaut de 0.

[ @active_end_date = ] active_end_date

Date à laquelle la Agent de distribution cesse d’être planifiée, mise en forme comme yyyyMMddsuit : @active_end_date est int, avec une valeur par défaut de 0.

[ @distribution_jobid = ] sortie de distribution_jobid

ID de la Agent de distribution pour ce travail. @distribution_jobid est un paramètre OUTPUT de type binary(16), avec une valeur par défaut NULL.

[ @encrypted_distributor_password = ] encrypted_distributor_password

@encrypted_distributor_password est bit, avec la valeur par défaut 0.

Remarque

La définition de @encrypted_distributor_password n’est plus prise en charge. Toute tentative de définition de ce paramètre 1 bit entraîne une erreur.

[ @enabled_for_syncmgr = ] N’enabled_for_syncmgr'

Spécifie si l’abonnement peut être synchronisé via Microsoft Synchronization Manager. @enabled_for_syncmgr est nvarchar(5), avec la valeur par défaut false.

  • Si false, l’abonnement n’est pas inscrit auprès du Gestionnaire de synchronisation.
  • Si true, l’abonnement est inscrit auprès du Gestionnaire de synchronisation et peut être synchronisé sans démarrer SQL Server Management Studio.

[ @ftp_address = ] N’ftp_address'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @ftp_port = ] ftp_port

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @ftp_login = ] N’ftp_login'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @ftp_password = ] N’ftp_password'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts.

[ @alt_snapshot_folder = ] N’alt_instantané_folder'

Indique l'emplacement du dossier de remplacement pour l'instantané. @alt_instantané_folder est nvarchar(255), avec la valeur par défaut NULL.

[ @working_directory = ] N’working_directory'

Nom du répertoire de travail utilisé pour stocker les données et les fichiers de schéma de la publication. @working_directory est nvarchar(255), avec la valeur par défaut NULL. Le nom doit être indiqué au format UNC.

[ @use_ftp = ] N’use_ftp'

Spécifie l’utilisation de FTP au lieu du protocole standard pour récupérer des instantané. @use_ftp est nvarchar(5), avec la valeur par défaut false.

[ @publication_type = ] publication_type

Indique le type de réplication de la publication. @publication_type est tinyint, avec une valeur par défaut de 0.

  • Si 0, la publication est un type de transaction.
  • Si 1, la composition est un type instantané.
  • Si 2, la publication est un type de fusion.

[ @dts_package_name = ] N’dts_package_name'

Spécifie le nom du package DTS. @dts_package_name est sysname, avec la valeur par défaut NULL. Par exemple, pour spécifier un package nommé DTSPub_Package, le paramètre est le suivant : @dts_package_name = N'DTSPub_Package'.

[ @dts_package_password = ] N’dts_package_password'

Spécifie le mot de passe du package, s'il existe. @dts_package_password est sysname, avec une valeur par défaut , ce qui signifie qu’un mot de NULLpasse n’est pas sur le package.

Remarque

Vous devez spécifier un mot de passe si @dts_package_name est spécifié.

[ @dts_package_location = ] N’dts_package_location'

Spécifie l'emplacement du package. @dts_package_location est nvarchar(12), avec la valeur par défaut subscriber. L’emplacement du package peut être distributor ou subscriber.

[ @reserved = ] N’reserved'

Identifié à titre d'information uniquement. Non pris en charge. La compatibilité future n'est pas garantie.

[ @offloadagent = ] N’offloadagent'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Si une valeur est précisée pour ce paramètre, un message d'avertissement est retourné mais la valeur reste ignorée. Définir @offloadagent sur une valeur autre que false la génération d’une erreur.

[ @offloadserver = ] N’offloadserver'

Ce paramètre est déconseillé et est maintenu pour la compatibilité descendante des scripts. Si une valeur est précisée pour ce paramètre, un message d'avertissement est retourné mais la valeur reste ignorée. Définir @offloadserver sur une valeur autre que false la génération d’une erreur.

[ @job_name = ] N’job_name'

Nom d’un travail d’agent existant. @job_name est sysname, avec la valeur par défaut NULL. Ce paramètre est uniquement spécifié lorsque l'abonnement est synchronisé à l'aide d'un travail existant au lieu d'un travail nouvellement créé (option par défaut). Si vous n’êtes pas membre du rôle serveur fixe sysadmin , vous devez spécifier @job_login et @job_password lorsque vous spécifiez @job_name.

[ @job_login = ] N’job_login'

Connexion pour le compte Windows sous lequel l’agent s’exécute. @job_login est nvarchar(257), sans valeur par défaut. C'est ce compte Windows qui est destiné à toujours être utilisé pour les connexions des Agents à l'Abonné.

[ @job_password = ] N’job_password'

Mot de passe du compte Windows sous lequel l’agent s’exécute. @job_password est sysname, sans valeur par défaut.

Important

N'utilisez pas de mot de passe vide. Utilisez un mot de passe fort. Lorsque c'est possible, demande aux utilisateurs de fournir les informations d'identification au moment de l'exécution. Si vous devez enregistrer les informations d'identification dans un fichier de script, vous devez sécuriser le fichier pour empêcher un accès non autorisé.

Valeurs des codes de retour

0 (réussite) ou 1 (échec).

Notes

sp_addpullsubscription_agentest utilisé dans instantané réplication et la réplication transactionnelle.

Exemples

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

Autorisations

Seuls les membres du rôle serveur fixe sysadmin ou db_owner rôle de base de données fixe peuvent s’exécuter sp_addpullsubscription_agent.