sp_addpullsubscription_agent (Transact-SQL)

S’applique à : SQL Server (toutes les versions prises en charge) Azure 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é.

Topic link iconConventions de la syntaxe Transact-SQL

Syntaxe

  
sp_addpullsubscription_agent [ @publisher = ] 'publisher'  
    [ , [ @publisher_db = ] 'publisher_db' ]          , [ @publication = ] 'publication'  
    [ , [ @subscriber = ] 'subscriber' ]  
    [ , [ @subscriber_db = ] 'subscriber_db' ]  
    [ , [ @subscriber_security_mode = ] subscriber_security_mode ]  
    [ , [ @subscriber_login = ] 'subscriber_login' ]  
    [ , [ @subscriber_password = ] 'subscriber_password' ]  
    [ , [ @distributor = ] 'distributor' ]  
    [ , [ @distribution_db = ] 'distribution_db' ]  
    [ , [ @distributor_security_mode = ] distributor_security_mode ]  
    [ , [ @distributor_login = ] 'distributor_login' ]  
    [ , [ @distributor_password = ] 'distributor_password' ]  
    [ , [ @optional_command_line = ] '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 = ] 'enabled_for_syncmgr' ]  
    [ , [ @ftp_address = ] 'ftp_address' ]  
    [ , [ @ftp_port = ] ftp_port ]  
    [ , [ @ftp_login = ] 'ftp_login' ]  
    [ , [ @ftp_password = ] 'ftp_password' ]  
    [ , [ @alt_snapshot_folder = ] 'alternate_snapshot_folder' ]  
    [ , [ @working_directory = ] 'working_directory' ]  
    [ , [ @use_ftp = ] 'use_ftp' ]  
    [ , [ @publication_type = ] publication_type ]  
    [ , [ @dts_package_name = ] 'dts_package_name' ]  
    [ , [ @dts_package_password = ] 'dts_package_password' ]  
    [ , [ @dts_package_location = ] 'dts_package_location' ]  
    [ , [ @reserved = ] 'reserved' ]  
    [ , [ @offloadagent = ] 'remote_agent_activation' ]  
    [ , [ @offloadserver = ] 'remote_agent_server_name']  
    [ , [ @job_name = ] 'job_name' ]  
    [ , [ @job_login = ] 'job_login' ]   
    [ , [ @job_password = ] 'job_password' ]   

Arguments

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

Notes

Le nom du serveur peut être spécifié en tant que <Hostname>,<PortNumber>. Vous devrez peut-être spécifier 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 uniquement à SQL Server 2019.

[ @publisher_db = ] 'publisher_db'_ Nom de la base de données Publisher. publisher_db est sysname, avec une valeur par défaut de NULL. publisher_db est ignoré par les éditeurs Oracle.

[ @publication = ] 'publication' Nom de la publication. la publication est sysname, sans valeur par défaut.

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

Notes

Lorsque vous exécutez sp_addpullsubscription_agent pour un abonné qui fait partie d’un groupe de disponibilité Always On, il est nécessaire de passer le paramètre @Subscriber comme 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 CU16, la procédure stockée s’exécute sans renvoyer une erreur, mais le paramètre @Subscriber sur le travail Agent de distribution ne référencera pas le nom de l’écouteur du groupe de disponibilité ; le paramètre est créé avec le nom du serveur d’abonné sur lequel la commande est exécutée. Pour modifier ce problème, mettez manuellement à jour le travail Agent de distribution (Agent de distribution travail@Subscriber paramètre avec la valeur du nom de l’écouteur de groupe de disponibilité.

Notes

Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis.

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

Notes

Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis.

[ @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 NULL par défaut. 0 spécifie l’authentification SQL Server. 1 spécifie l’authentification Windows.

Notes

Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis. 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 = ] 'subscriber_login' Connexion de l’Abonné à utiliser lors de la connexion à un Abonné lors de la synchronisation. subscriber_login est sysname, avec la valeur NULL par défaut.

Notes

Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis. 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 = ] 'subscriber_password' Mot de passe de l’Abonné. subscriber_password est nécessaire si subscriber_security_mode a la valeur 0. subscriber_password est sysname, avec la valeur NULL par défaut. Si un mot de passe d'abonné est utilisé, il est automatiquement chiffré.

Notes

Ce paramètre est déconseillé et n'est maintenu que dans un but de compatibilité ascendante avec les scripts déjà établis. Si une valeur est précisée pour ce paramètre, un message d'avertissement est retourné mais la valeur reste ignorée.

[ @distributor = ] 'distributor' Nom du serveur de distribution. le serveur de distribution est sysname, avec une valeur par défaut spécifiée par l’éditeur.

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

[ @distributor_security_mode = ] distributor_security_mode Mode de sécurité à utiliser lors de la connexion à un serveur de distribution lors de la synchronisation. distributor_security_mode est int, avec une valeur par défaut de 1. 0 spécifie l’authentification SQL Server. 1 spécifie l’authentification Windows.

Important

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

[ @distributor_login = ] 'distributor_login' Connexion du serveur de distribution à utiliser lors de la connexion à un serveur de distribution lors de la synchronisation. distributor_login est nécessaire si distributor_security_mode est définie sur 0. distributor_login est sysname, avec la valeur NULL par défaut.

[ @distributor_password = ] 'distributor_password' Mot de passe du serveur de distribution. distributor_password est nécessaire si distributor_security_mode est définie sur 0. distributor_password est sysname, avec la valeur NULL 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é.

[ @optional_command_line = ] '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 chaîne vide par défaut.

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

Valeur Description
1 Ponctuelle
2 (par défaut) À la demande
4 Quotidien
8 Hebdomadaire
16 Mensuelle
32 Mensuelle relative
64 Autostart
128 Périodique

Notes

La spécification d’une valeur de 64 entraîne l’exécution du Agent de distribution en mode continu. Cela correspond à la définition du paramètre -Continuous pour 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 une valeur par défaut de 1.

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

Valeur Description
1 (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 une valeur par défaut de 1.

[ @frequency_subday = ] frequency_subday Est 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 (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 une valeur par défaut de 1.

[ @active_start_time_of_day = ] active_start_time_of_dayHeure du jour où le Agent de distribution est planifié pour la première fois, mis en forme comme HHMMSS. active_start_time_of_day est int, avec une valeur par défaut de 0.

[ @active_end_time_of_day = ] active_end_time_of_dayHeure de jour où le Agent de distribution cesse d’être planifié, mis en forme comme HHMMSS. active_end_time_of_day est int, avec une valeur par défaut de 0.

[ @active_start_date = ] active_start_dateDate à laquelle le Agent de distribution est planifié en premier, mis en forme comme AAAAMMDD. active_start_date est int, avec une valeur par défaut de 0.

[ @active_end_date = ] active_end_dateDate à laquelle le Agent de distribution cesse d’être planifié, mis en forme comme AAAAMMDD. active_end_date est int, avec une valeur par défaut de 0.

[ @distribution_jobid = ] _distribution_jobidOUTPUTID du Agent de distribution de ce travail. distribution_jobid est binaire(16), avec la valeur NULL par défaut et il s’agit d’un paramètre OUTPUT.

[ @encrypted_distributor_password = ] encrypted_distributor_password Le paramètre encrypted_distributor_password n’est plus pris en charge. La tentative de définition de ce paramètre bit sur 1 entraîne une erreur.

[ @enabled_for_syncmgr = ] 'enabled_for_syncmgr' Indique si l’abonnement peut être synchronisé par le biais du Gestionnaire de synchronisation Microsoft. enabled_for_syncmgr est nvarchar(5), avec la valeur FALSE par défaut. Si la valeur est false, l’abonnement n’est pas inscrit auprès du Gestionnaire de synchronisation. Si la valeur est true, l’abonnement est inscrit auprès du Gestionnaire de synchronisation et peut être synchronisé sans commencer SQL Server Management Studio.

[ @ftp_address = ] 'ftp_address' Pour la compatibilité descendante uniquement.

[ @ftp_port = ] ftp_port Pour la compatibilité descendante uniquement.

[ @ftp_login = ] 'ftp_login' Pour la compatibilité descendante uniquement.

[ @ftp_password = ] 'ftp_password' Pour la compatibilité descendante uniquement.

[ @alt_snapshot_folder = ] 'alternate_snapshot_folder'_ Spécifie l’emplacement du dossier de remplacement de l’instantané. alternate_snapshot_folder est nvarchar(255), avec la valeur NULL par défaut.

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

[ @use_ftp = ] 'use_ftp' Spécifie l’utilisation de FTP au lieu du protocole normal pour récupérer des instantanés. use_ftp est nvarchar(5), avec la valeur FALSE par défaut.

[ @publication_type = ] publication_type Spécifie le type de réplication de la publication. publication_type est un tinyint avec une valeur par défaut de 0. Si 0, la composition est un type de transaction. Si 1, la publication est un type d’instantané. Si 2, la publication est un type de fusion.

[ @dts_package_name = ] 'dts_package_name' Spécifie le nom du package DTS. dts_package_name est un nom sysname avec la valeur NULL par défaut. 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 = ] 'dts_package_password' Spécifie le mot de passe sur le package, s’il en existe un. dts_package_password est sysname avec une valeur null par défaut, ce qui signifie qu’un mot de passe n’est pas sur le package.

Notes

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

[ @dts_package_location = ] 'dts_package_location' Spécifie l’emplacement du package. dts_package_location est un nvarchar(12), avec une valeur par défaut d’abonné. L’emplacement du package peut être le serveur de distribution ou l’abonné.

[ @reserved = ] 'reserved'

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

[ @offloadagent = ] 'remote_agent_activation'

Notes

L'activation d'agent distant est déconseillée et n'est plus prise en charge. Ce paramètre est uniquement pris en charge pour assurer la compatibilité descendante des scripts. La définition de remote_agent_activation sur une valeur autre que false génère une erreur.

[ @offloadserver = ] 'remote_agent_server_name'

Notes

L'activation d'agent distant est déconseillée et n'est plus prise en charge. Ce paramètre est uniquement pris en charge pour assurer la compatibilité descendante des scripts. La définition de remote_agent_server_name à une valeur non NULL génère une erreur.

[ @job_name = ] 'job_name' Nom d’un travail d’agent existant. job_name est sysname, avec une valeur par défaut de NULL. Ce paramètre n'est indiqué que lorsque l'abonnement est synchronisé grâce à un travail existant plutôt qu'un nouveau travail (étant le comportement 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 = ] 'job_login' Se connecter au 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 = ] '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

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

Codet de retour

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

Remarques

sp_addpullsubscription_agent est utilisé dans la réplication d’instantané et la réplication transactionnelle.

Exemple

-- 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'AdventureWorks2012';

-- At the subscription database, create a pull subscription 
-- to a transactional publication.
USE [AdventureWorks2012Replica]
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 exécuter sp_addpullsubscription_agent.

Voir aussi

Créer un abonnement par extraction de données (pull)
S'abonner à des publications
sp_addpullsubscription (Transact-SQL)
sp_change_subscription_properties (Transact-SQL)
sp_droppullsubscription (Transact-SQL)
sp_helppullsubscription (Transact-SQL)
sp_helpsubscription_properties (Transact-SQL)