Partager via


Utiliser des profils d'agent de réplication

S’applique à : SQL Server Azure SQL Managed Instance

Cette rubrique décrit comment travailler avec les profils de l’Agent de réplication dans SQL Server en utilisant SQL Server Management Studio, Transact-SQL ou Replication Management Objects (RMO). Le comportement de chaque agent de réplication est contrôlé par un jeu de paramètres que vous pouvez configurer dans un profil de l'Agent. Chaque agent possède un profil par défaut et certains possèdent d'autres profils prédéfinis ; un Agent ne peut avoir qu'un profil actif à tout moment.

Dans cette rubrique

Utilisation de SQL Server Management Studio

Pour accéder à la boîte de dialogue Profils d'Agent à partir de SQL Server Management Studio

  1. Dans la page Général de la boîte de dialogue Propriétés du serveur de distribution - <serveur de distribution>, cliquez sur Profils par défaut.

Pour accéder à la boîte de dialogue Profils d'Agent à partir du moniteur de réplication

  • Pour ouvrir la boîte de dialogue relative à tous les Agents, cliquez avec le bouton droit sur un serveur de publication puis cliquez sur Profils d'Agent.

  • Pour ouvrir la boîte de dialogue d'un seul Agent

    1. Développez un groupe Serveur de publication dans le volet gauche du moniteur de réplication, développez un serveur de publication puis cliquez sur une publication.

    2. Pour les profils de l'Agent de distribution et de l'Agent de fusion, cliquez avec le bouton droit sur un abonnement dans l'onglet Tous les abonnements puis cliquez sur Profil de l'Agent. Pour les autres agents, cliquez avec le bouton droit sur l'agent sous l'onglet Agents , puis cliquez sur Profil d'agent.

Pour spécifier un profil d'un Agent

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.

  2. Sélectionnez un profil dans la colonne Valeur par défaut pour nouveau de la grille Profils d'Agent . Par défaut, le profil est uniquement appliqué aux agents pour les nouveaux abonnements et publications.

  3. Pour que tous les agents du type sélectionné pour les abonnements ou publications existants utilisent ce profil, cliquez sur Modifier les Agents existants.

Pour afficher et modifier les paramètres associés à un profil

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.

  2. Cliquez sur le bouton des propriétés (...) en regard d’un profil.

  3. Affichez les paramètres et les valeurs dans la boîte de dialogue Propriétés du profil <ProfileName>

    • Les paramètres des profils définis par l'utilisateur peuvent être modifiés, ce qui n'est pas le cas des profils système prédéfinis.

    • Pour afficher tous les paramètres relatifs à un Agent, désactivez la case à cocher Afficher uniquement les paramètres utilisés dans ce profil . Pour plus d'informations sur les paramètres des Agents, consultez les liens à la fin de cette rubrique.

  4. Cliquez sur Fermer.

Pour créer un profil défini par l'utilisateur

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.

  2. Cliquez sur Nouveau.

  3. Dans la boîte de dialogue d'initialisation Nouveau profil de l'Agent , sélectionnez un profil existant qui servira de base au nouveau profil.

  4. Dans la boîte de dialogue Nouveau profil de l'Agent , entrez des valeurs dans les zones de texte Nom et Description .

  5. Modifiez les paramètres pour adapter le profil à vos besoins. Pour afficher tous les paramètres relatifs à un Agent, désactivez la case à cocher Afficher uniquement les paramètres utilisés dans ce profil . Pour plus d'informations sur les paramètres des Agents, consultez les liens à la fin de cette rubrique.

  6. Cliquez sur OK.

Pour supprimer un profil défini par l'utilisateur

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.

  2. Si un profil est associé à un ou plusieurs agents, modifiez le profil de ceux-ci :

    1. Sélectionnez un autre profil dans la grille Profils d'Agent .

    2. Cliquez sur Modifier les Agents existants.

      Remarque

      Cela modifie le profil de tous les agents du type sélectionné pour les publications ou abonnements existants et pas seulement ceux qui utilisent le profil à supprimer.

  3. Cliquez sur le profil à supprimer, puis sur Supprimer.

  4. Cliquez sur OK.

Utilisation de Transact-SQL

Pour créer un profil d'agent

  1. Sur le serveur de distribution, exécutez sp_add_agent_profile (Transact-SQL). Spécifiez @name, la valeur 1 pour @profile_typeet l'une des valeurs suivantes pour @agent_type:

    Si ce profil devient le nouveau profil par défaut pour son type d'agent de réplication, spécifiez une valeur de 1 pour @default. L'identificateur pour le nouveau profil est retourné à l'aide du paramètre de sortie @profile_id . Cela crée un nouveau profil avec un jeu de paramètres de profil basé sur le profil par défaut pour le type d'agent donné.

  2. Après avoir créé le nouveau profil, ajoutez, supprimez ou modifiez les paramètres par défaut pour personnaliser le profil.

Pour modifier un profil d'agent existant

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL). Spécifiez l'une des valeurs suivantes pour @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés. Notez la valeur de profile_id dans le jeu de résultats pour le profil à modifier.

  2. Sur le serveur de distribution, exécutez sp_help_agent_parameter (Transact-SQL). Spécifiez l'identificateur de profil de l'étape 1 pour @profile_id. Tous les paramètres du profil sont alors retournés. Notez le nom de tous les paramètres à modifier ou à supprimer du profil.

  3. Pour changer la valeur d’un paramètre dans un profil, exécutez sp_change_agent_parameter (Transact-SQL). Spécifiez l’identificateur de profil de l’étape 1 pour @profile_id, le nom du paramètre à changer pour @parameter_name et une nouvelle valeur pour @parameter_value.

    Remarque

    Vous ne pouvez pas modifier un profil d'agent existant pour qu'il devienne le profil par défaut d'un agent. Vous devez créer à la place un nouveau profil comme profil par défaut, comme illustré dans la procédure précédente.

  4. Pour supprimer un paramètre d’un profil, exécutez sp_drop_agent_parameter (Transact-SQL). Spécifiez l'identificateur de profil de l'étape 1 pour @profile_id et le nom du paramètre à supprimer pour @parameter_name.

  5. Pour ajouter un nouveau paramètre à un profil, vous devez effectuer les opérations suivantes :

    • Interrogez la table MSagentparameterlist (Transact-SQL) sur le serveur de distribution pour déterminer quels paramètres de profil peuvent être définis pour chaque type d’agent.

    • Sur le serveur de distribution, exécutez sp_add_agent_parameter (Transact-SQL). Spécifiez l'identificateur de profil de l'étape 1 pour @profile_id, le nom d'un paramètre valide à ajouter pour @parameter_nameet la valeur du paramètre pour @parameter_value.

Pour supprimer un profil d'agent

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL). Spécifiez l'une des valeurs suivantes pour @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés. Notez la valeur de profile_id dans le jeu de résultats pour le profil à supprimer.

  2. Sur le serveur de distribution, exécutez sp_drop_agent_profile (Transact-SQL). Spécifiez l'identificateur de profil de l'étape 1 pour @profile_id.

Pour utiliser les profils d'agent pendant la synchronisation

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL). Spécifiez l'une des valeurs suivantes pour @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés. Notez la valeur de profile_name dans le jeu de résultats pour le profil à utiliser.

  2. Si l'agent est démarré à partir d'un travail d'agent, modifiez l'étape du travail qui démarre l'agent pour spécifier la valeur de profile_name obtenue dans l'étape 1 après le -ProfileName . Pour plus d’informations, consultez Afficher et modifier des paramètres d’invite de commandes d’un Agent de réplication (SQL Server Management Studio).

  3. Lorsque vous démarrez l'agent à partir de l'invite de commandes, spécifiez la valeur profile_name obtenue à l'étape 1 après le paramètre de ligne de commande -ProfileName .

Exemple (Transact-SQL)

Cet exemple crée un profil personnalisé pour l'Agent de fusion nommé custom_merge, modifie la valeur du paramètre -UploadReadChangesPerBatch , ajoute un nouveau paramètre -ExchangeType et retourne des informations sur le profil créé.

DECLARE @profilename AS sysname;
DECLARE @profileid AS int;
SET @profilename = N'custom_merge';

-- Create a temporary table to hold the returned 
-- Merge Agent profiles.
CREATE TABLE #profiles (
    profile_id int, 
    profile_name sysname,
    agent_type int,
    [type] int,
    description varchar(3000),
    def_profile bit)

INSERT INTO #profiles (profile_id, profile_name, 
    agent_type, [type],description, def_profile)
    EXEC sp_help_agent_profile @agent_type = 4;

SET @profileid = (SELECT profile_id FROM #profiles 
    WHERE profile_name = @profilename);

IF (@profileid IS NOT NULL)
BEGIN
    EXEC sp_drop_agent_profile @profileid;
END
DROP TABLE #profiles

-- Add a new merge agent profile. 
EXEC sp_add_agent_profile @profile_id = @profileid OUTPUT, 
@profile_name = @profilename, @agent_type = 4, 
@description = N'custom merge profile';

-- Change the value of uploadreadchangesperbatch in the profile.
EXEC sp_change_agent_parameter @profile_id = @profileid, 
    @parameter_name = N'-UploadReadChangesPerBatch', @parameter_value = 50;

-- Add a new parameter ExchangeType the profile. 
EXEC sp_add_agent_parameter @profile_id = @profileid, 
    @parameter_name = N'-ExchangeType', @parameter_value = 1;

-- Verify the new profile. 
EXEC sp_help_agent_parameter @profileid;
GO

Utilisation d'RMO

Pour créer un profil d'agent

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .

  2. Créez une instance de la classe AgentProfile.

  3. Définissez les propriétés suivantes de l'objet :

  4. Appelez la méthode Create pour créer le profil sur le serveur.

  5. Une fois que le profil existe sur le serveur, vous pouvez le personnaliser en ajoutant, en supprimant ou en modifiant les valeurs des paramètres de l'agent de réplication.

  6. Pour assigner le profil à un travail d'agent de réplication existant, appelez la méthode AssignToAgent . Passez le nom de la base de données de distribution pour distributionDBName et l'ID du travail pour agentID.

Pour modifier un profil d'agent existant

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .

  2. Créez une instance de la classe ReplicationServer. Passez l'objet ServerConnection créé dans l'étape 1.

  3. Appelez la méthode LoadProperties . Si cette méthode retourne false, vérifiez que le serveur de distribution existe.

  4. Appelez la méthode EnumAgentProfiles . Passez une valeur AgentType pour limiter les profils retournés à un type spécifique d'agent de réplication.

  5. Obtenez l'objet AgentProfile souhaité à partir du ArrayListretourné, où la propriété Name de l'objet correspond au nom de profil.

  6. Appelez l'une des méthodes suivantes de AgentProfile pour modifier le profil :

    • AddParameter - ajoute un paramètre pris en charge au profil, où name est le nom du paramètre d'agent de réplication et value la valeur spécifiée. Pour énumérer tous les paramètres d'agent pris en charge pour un type d'agent donné, appelez la méthode EnumParameterInfo . Cette méthode retourne un ArrayList des objets AgentProfileParameterInfo qui représentent tous les paramètres pris en charge.

    • RemoveParameter - supprime un paramètre existant du profil, où name est le nom du paramètre d'agent de réplication. Pour énumérer tous les paramètres d'agent actuels définis pour le profil, appelez la méthode EnumParameters . Cette méthode retourne un ArrayList des objets AgentProfileParameter qui représentent le paramètre existant de ce profil.

    • ChangeParameter - modifie le paramètre d'un paramètre existant du profil, où name est le nom du paramètre d'agent et newValue la nouvelle valeur du paramètre. Pour énumérer tous les paramètres d'agent actuels définis pour le profil, appelez la méthode EnumParameters . Cette méthode retourne un ArrayList des objets AgentProfileParameter qui représentent le paramètre existant de ce profil. Pour énumérer toutes les valeurs des paramètres d'agent pris en charge, appelez la méthode EnumParameterInfo . Cette méthode retourne un ArrayList des objets AgentProfileParameterInfo qui représentent les valeurs prises en charge pour tous les paramètres.

Pour supprimer un profil d'agent

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .

  2. Créez une instance de la classe AgentProfile. Définissez le nom du profil pour Name et le ServerConnection à partir de l'étape 1 de ConnectionContext.

  3. Appelez la méthode LoadProperties . Si cette méthode retourne false, le nom spécifié était incorrect ou le profil n'existe pas sur le serveur.

  4. Vérifiez que la propriété Type a la valeur User, ce qui indique un profil de client. Vous ne devez pas supprimer un profil qui a une valeur de System pour Type.

  5. Appelez la méthode Remove pour supprimer le profil défini par l'utilisateur représenté par cet objet du serveur.

Suivi : Après avoir modifié les paramètres de l'Agent

Les modifications apportées aux paramètres prennent effet au prochain démarrage de l'Agent. Si l'Agent fonctionne en continu, vous devez l'arrêter, puis le redémarrer. À compter de la mise à jour cumulative 3 pour SQL Server 2017, certaines modifications apportées aux paramètres de l’Agent prennent effet sans avoir à redémarrer les Agents.