Partager via


sp_addmergepushsubscription_agent (Transact-SQL)

S’applique à : SQL Server Azure SQL Managed Instance

Ajoute un nouveau travail d'Agent permettant de planifier la synchronisation d'un abonnement par envoi de données (push) à une publication de fusion. Cette procédure stockée est exécutée sur le serveur de publication dans la base de données de publication.

Important

Lors de la configuration d’un serveur de publication avec un serveur de distribution distant, les valeurs fournies pour tous les paramètres, y compris @job_login et @job_password, sont envoyées au serveur de distribution sous forme de texte brut. Vous devez chiffrer la connexion entre le serveur de publication et son serveur de distribution distant avant d'exécuter cette procédure stockée. Pour plus d’informations, consultez Configurer le moteur de base de données SQL Server pour le chiffrement des connexions.

Conventions de la syntaxe Transact-SQL

Remarque

Microsoft Entra ID était précédemment connu sous le nom d'Azure Active Directory (Azure AD).

Syntaxe

sp_addmergepushsubscription_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' ]
    [ , [ @publisher_security_mode = ] publisher_security_mode ]
    [ , [ @publisher_login = ] N'publisher_login' ]
    [ , [ @publisher_password = ] N'publisher_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 ]
    [ , [ @enabled_for_syncmgr = ] N'enabled_for_syncmgr' ]
[ ; ]

Arguments

[ @publication = ] N’publication'

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

[ @subscriber = ] N’subscriber'

Nom de l'Abonné. @subscriber est sysname, avec la valeur par défaut NULL.

[ @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.

[ @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 smallint, avec une valeur par défaut de 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, à compter 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.

[ @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. @subscriber_login est obligatoire si @subscriber_security_mode a la valeur 0.

[ @subscriber_password = ] N’subscriber_password'

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

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

[ @publisher_security_mode = ] publisher_security_mode

Mode de sécurité à utiliser lors de la connexion à un serveur de publication lors de la synchronisation. @publisher_security_mode est smallint, avec une valeur par défaut de 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, à compter 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.

[ @publisher_login = ] N’publisher_login'

Connexion à utiliser lors de la connexion à un serveur de publication lors de la synchronisation. @publisher_login est sysname, avec la valeur par défaut NULL.

[ @publisher_password = ] N’publisher_password'

Mot de passe utilisé lors de la connexion au serveur de publication. @publisher_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é.

[ @job_login = ] N’job_login'

Connexion pour le compte Windows sous lequel l’agent s’exécute. @job_login est nvarchar(257), avec la valeur par défaut NULL. Ce compte Windows est toujours utilisé pour les connexions d'Agent au serveur de distribution et pour les connexions à l'Abonné et au serveur de publication lors de l'utilisation de l'authentification intégrée de Windows.

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

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

[ @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.

[ @frequency_type = ] frequency_type

Valeur indiquant quand le Agent de fusion s’exécute. @frequency_type est int et peut être l’une des valeurs suivantes.

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

Remarque

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

[ @frequency_interval = ] frequency_interval

Jours où l'Agent de fusion est exécuté. @frequency_interval est int et peut être l’une des valeurs suivantes.

Valeur Description
1 Dimanche
2 Lundi
3 Mardi
4 Mercredi
5 Jeudi
6 Vendredi
7 Samedi
8 Day
9 Jours de la semaine
10 Jours de week-end
NULL (valeur par défaut)

[ @frequency_relative_interval = ] frequency_relative_interval

Date du Agent de fusion. 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 First
2 Second
4 Third
8 Quatrième
16 Dernière
NULL (valeur par défaut)

[ @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 0.

[ @frequency_subday = ] frequency_subday

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

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

[ @frequency_subday_interval = ] frequency_subday_interval

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

[ @active_start_time_of_day = ] active_start_time_of_day

Heure du jour où la Agent de fusion 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ù la Agent de fusion cesse d’être planifiée, mise en forme comme HHmmss. @active_end_time_of_day est int, avec la valeur par défaut 235959.

[ @active_start_date = ] active_start_date

Date à laquelle la Agent de fusion est planifiée pour la première fois, mise 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 fusion cesse d’être planifiée, mise en forme comme yyyyMMddsuit : @active_end_date est int, avec une valeur par défaut de 99991231.

[ @enabled_for_syncmgr = ] N’enabled_for_syncmgr'

Spécifie si l'abonnement peut être synchronisé à l'aide du Gestionnaire de synchronisation Windows. @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.

Valeurs des codes de retour

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

Notes

sp_addmergepushsubscription_agent est utilisé dans la réplication de fusion et utilise des fonctionnalités similaires à sp_addpushsubscription_agent.

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

DECLARE @publication AS sysname;
DECLARE @subscriber AS sysname;
DECLARE @subscriptionDB AS sysname;
DECLARE @hostname AS sysname;
SET @publication = N'AdvWorksSalesOrdersMerge';
SET @subscriber = $(SubServer);
SET @subscriptionDB = N'AdventureWorksReplica'; 
SET @hostname = N'adventure-works\david8'

-- Add a push subscription to a merge publication.
USE [AdventureWorks2022];
EXEC sp_addmergesubscription 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @subscription_type = N'push',
  @hostname = @hostname;

--Add an agent job to synchronize the push subscription.
EXEC sp_addmergepushsubscription_agent 
  @publication = @publication, 
  @subscriber = @subscriber, 
  @subscriber_db = @subscriptionDB, 
  @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_addmergepushsubscription_agent.