Utiliser des profils d'agent de réplicationWork with Replication Agent Profiles

S’APPLIQUE À : ouiSQL Server ouiAzure SQL Database (Managed Instance uniquement) nonAzure Synapse Analytics (SQL DW) nonParallel Data Warehouse APPLIES TO: yesSQL Server yesAzure SQL Database (Managed Instance only) noAzure Synapse Analytics (SQL DW) noParallel Data Warehouse

Cette rubrique explique comment utiliser les profils de l'Agent de réplication dans SQL ServerSQL Server à l'aide de SQL Server Management StudioSQL Server Management Studio, de Transact-SQLTransact-SQLou d'objets RMO (Replication Management Objects).This topic describes how to work with Replication Agent Profiles in SQL ServerSQL Server by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or 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.The behavior of each replication agent is controlled by a set of parameters that can be set through agent profiles. 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.Each agent has a default profile, and some have additional predefined profiles; at a given time, only one profile is active for an agent.

Dans cette rubriqueIn This Topic

Utilisation de SQL Server Management StudioUsing SQL Server Management Studio

Pour accéder à la boîte de dialogue Profils d'Agent à partir de SQL Server Management StudioTo access the Agent Profiles dialog box from 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_distribution, cliquez sur Profils par défaut.On the General page of the Distributor Properties - <Distributor> dialog box, click Profile Defaults.

Pour accéder à la boîte de dialogue Profils d'Agent à partir du moniteur de réplicationTo access the Agent Profiles dialog box from Replication Monitor

  • 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.To open the dialog box for all agents, right-click a Publisher, and then click Agent Profiles.

  • Pour ouvrir la boîte de dialogue d'un seul AgentTo open the dialog box for a single 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.Expand a Publisher group in the left pane of Replication Monitor, expand a Publisher, and then click a 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.For Distribution Agent and Merge Agent profiles, right-click a subscription on the All Subscriptions tab, and then click Agent Profile. Pour les autres agents, cliquez avec le bouton droit sur l'agent sous l'onglet Agents , puis cliquez sur Profil d'agent.For other agents, right-click the agent on the Agents tab, and then click Agent Profile.

Pour spécifier un profil d'un AgentTo specify a profile for an agent

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Sélectionnez un profil dans la colonne Valeur par défaut pour nouveau de la grille Profils d'Agent .Select a profile in the Default for new column of the Agent profiles grid. Par défaut, le profil est uniquement appliqué aux agents pour les nouveaux abonnements et publications.By default, the profile is only applied to agents for new publications and subscriptions.

  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.To specify that all agents of the selected type for existing publications or subscriptions should use this profile, click Change existing agents.

Pour afficher et modifier les paramètres associés à un profilTo view and edit the parameters associated with a profile

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Cliquez sur le bouton des propriétés ( ... ) en regard d’un profil.Click the properties button (...) next to a profile.

  3. Affichez les paramètres et les valeurs dans la boîte de dialogue Propriétés du profil <Nom_du_profil.View the parameters and values in the <ProfileName> Profile Properties dialog box.

    • 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.Parameters in user-defined profiles can be edited; parameters in predefined system profiles cannot.

    • Pour afficher tous les paramètres relatifs à un Agent, désactivez la case à cocher Afficher uniquement les paramètres utilisés dans ce profil .To view all parameters for an agent, clear the Show only parameters used in this profile check box. Pour plus d'informations sur les paramètres des Agents, consultez les liens à la fin de cette rubrique.For information about agent parameters, see the links at the end of this topic.

  4. Cliquez sur Fermer.Click Close.

Pour créer un profil défini par l'utilisateurTo create a user-defined profile

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Cliquez sur Nouveau.Click New.

  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.In the New Agent Profile initialization dialog box, select an existing profile on which to base the new profile.

  4. Dans la boîte de dialogue Nouveau profil de l'Agent , entrez des valeurs dans les zones de texte Nom et Description .In the New Agent Profile dialog box, enter values in the Name and Description text boxes.

  5. Modifiez les paramètres pour adapter le profil à vos besoins.Modify parameters to tailor the profile. Pour afficher tous les paramètres relatifs à un Agent, désactivez la case à cocher Afficher uniquement les paramètres utilisés dans ce profil .To view all parameters for an agent, clear the Show only parameters used in this profile check box. Pour plus d'informations sur les paramètres des Agents, consultez les liens à la fin de cette rubrique.For information about agent parameters, see the links at the end of this topic.

  6. Cliquez sur OK.Click OK.

Pour supprimer un profil défini par l'utilisateurTo delete a user-defined profile

  1. Si la boîte de dialogue Profils d'Agent affiche les profils de plusieurs agents, sélectionnez un Agent.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Si un profil est associé à un ou plusieurs agents, modifiez le profil de ceux-ci :If a profile is associated with one or more agents, change the profile for those agents:

    1. Sélectionnez un autre profil dans la grille Profils d'Agent .Select a different profile in the Agent profiles grid.

    2. Cliquez sur Modifier les Agents existants.Click Change existing agents.

      Notes

      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.This will change the profile for all agents of the selected type for existing publications or subscriptions, not only the ones using the profile you want to delete.

  3. Cliquez sur le profil à supprimer, puis sur Supprimer.Select the profile you want to delete, and then click Delete.

  4. Cliquez sur OK.Click OK.

Utilisation de Transact-SQLUsing Transact-SQL

Pour créer un profil d'agentTo create a new agent profile

  1. Sur le serveur de distribution, exécutez sp_add_agent_profile (Transact-SQL).At the Distributor, execute sp_add_agent_profile (Transact-SQL). Spécifiez @name, la valeur 1 pour @profile_type et l’une des valeurs suivantes pour @agent_type :Specify @name, a value of 1 for @profile_type, and one of the following values for @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.If this profile will become the new default profile for its type of replication agent, specify a value of 1 for @default. L’identificateur du nouveau profil est retourné à l’aide du paramètre de sortie @profile_id.The identifier for the new profile is returned using the @profile_id output parameter. 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é.This creates a new profile with a set of profile parameters based on the default profile for the given agent type.

  2. Après avoir créé le nouveau profil, ajoutez, supprimez ou modifiez les paramètres par défaut pour personnaliser le profil.After the new profile has been created, add, remove, or modify the default parameters to customize the profile.

Pour modifier un profil d'agent existantTo modify an existing agent profile

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Spécifiez l’une des valeurs suivantes pour @agent_type :Specify one of the following values for @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés.This returns all profiles for the specified type of agent. Notez la valeur de profile_id dans le jeu de résultats pour le profil à modifier.Note the value of profile_id in the result set for the profile to change.

  2. Sur le serveur de distribution, exécutez sp_help_agent_parameter (Transact-SQL).At the Distributor, execute sp_help_agent_parameter (Transact-SQL). Spécifiez l’identificateur de profil de l’étape 1 pour @profile_id.Specify the profile identifier from step 1 for @profile_id. Tous les paramètres du profil sont alors retournés.This returns all parameters for the profile. Notez le nom de tous les paramètres à modifier ou à supprimer du profil.Note the name of any parameters to modify or remove from the profile.

  3. Pour changer la valeur d’un paramètre dans un profil, exécutez sp_change_agent_parameter (Transact-SQL).To change the value of a parameter in a profile, execute 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 @property et une nouvelle valeur pour le paramètre de @value.Specify the profile identifier from step 1 for @profile_id, the name of the parameter to change for @parameter_name, and a new value for the parameter for @parameter_value.

    Notes

    Vous ne pouvez pas modifier un profil d'agent existant pour qu'il devienne le profil par défaut d'un agent.You cannot change an existing agent profile to become the default profile for an agent. Vous devez créer à la place un nouveau profil comme profil par défaut, comme illustré dans la procédure précédente.You must instead create a new profile as the default profile, as shown in the previous procedure.

  4. Pour supprimer un paramètre d’un profil, exécutez sp_drop_agent_parameter & #40 ; Transact-SQL & #41;.To remove a parameter from a profile, execute 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.Specify the profile identifier from step 1 for @profile_id and the name of the parameter to remove for @parameter_name.

  5. Pour ajouter un nouveau paramètre à un profil, vous devez effectuer les opérations suivantes :To add a new parameter to a profile, you must do the following:

    • 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.Query the MSagentparameterlist (Transact-SQL) table at the Distributor to determine which profile parameters can be set for each agent type.

    • Sur le serveur de distribution, exécutez sp_add_agent_parameter (Transact-SQL).At the Distributor, execute 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_name et la valeur du paramètre pour @parameter_value.Specify the profile identifier from step 1 for @profile_id, the name of a valid parameter to add for @parameter_name, and the value of the parameter for @parameter_value.

Pour supprimer un profil d'agentTo delete an agent profile

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Spécifiez l’une des valeurs suivantes pour @agent_type :Specify one of the following values for @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés.This returns all profiles for the specified type of agent. Notez la valeur de profile_id dans le jeu de résultats pour le profil à supprimer.Note the value of profile_id in the result set for the profile to remove.

  2. Sur le serveur de distribution, exécutez sp_drop_agent_profile (Transact-SQL).At the Distributor, execute sp_drop_agent_profile (Transact-SQL). Spécifiez l’identificateur de profil de l’étape 1 pour @profile_id.Specify the profile identifier from step 1 for @profile_id.

Pour utiliser les profils d'agent pendant la synchronisationTo use agent profiles during synchronization

  1. Sur le serveur de distribution, exécutez sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Spécifiez l’une des valeurs suivantes pour @agent_type :Specify one of the following values for @agent_type:

    Tous les profils pour le type d'agent spécifié sont retournés.This returns all profiles for the specified type of agent. Notez la valeur de profile_name dans le jeu de résultats pour le profil à utiliser.Note the value of profile_name in the result set for the profile to use.

  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 .If the agent is started from an agent job, edit the job step that starts the agent to specify the value of profile_name obtained in step 1 after the -ProfileName command-line parameter. 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).For more information, see View and Modify Replication Agent Command Prompt Parameters (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 .When starting the agent from the command prompt, specify the value of profile_name obtained in step 1 after the -ProfileName command-line parameter.

Exemple (Transact-SQL)Example (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éé.This example creates a custom profile for the Merge Agent named custom_merge, changes the value of the -UploadReadChangesPerBatch parameter, adds a new -ExchangeType parameter, and returns information on the profile that is created.

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'RMOUsing RMO

Pour créer un profil d'agentTo create a new agent profile

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Créez une instance de la classe AgentProfile .Create an instance of the AgentProfile class.

  3. Définissez les propriétés suivantes de l'objet :Set the following properties on the object:

  4. Appelez la méthode Create pour créer le profil sur le serveur.Call the Create method to create the profile on the server.

  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.Once the profile exists on the server, you can customize it by adding, removing, or changing the values of replication agent parameters.

  6. Pour assigner le profil à un travail d'agent de réplication existant, appelez la méthode AssignToAgent .To assign the profile to an existing replication agent job, call the AssignToAgent method. Passez le nom de la base de données de distribution pour distributionDBName et l'ID du travail pour agentID.Pass the name of the distribution database for distributionDBName and the ID of the job for agentID.

Pour modifier un profil d'agent existantTo modify an existing agent profile

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Créez une instance de la classe ReplicationServer .Create an instance of the ReplicationServer class. Passez l'objet ServerConnection créé dans l'étape 1.Pass the ServerConnection object created in step 1.

  3. Appelez la méthode LoadProperties .Call the LoadProperties method. Si cette méthode retourne false, vérifiez que le serveur de distribution existe.If this method returns false, verify that the Distributor exists.

  4. Appelez la méthode EnumAgentProfiles .Call the EnumAgentProfiles method. Passez une valeur AgentType pour limiter les profils retournés à un type spécifique d'agent de réplication.Pass an AgentType value to narrow down the returned profiles to a specific type of replication agent.

  5. Obtenez l'objet AgentProfile souhaité à partir du ArrayListretourné, où la propriété Name de l'objet correspond au nom de profil.Get the desired AgentProfile object from the returned ArrayList, where the Name property of the object matches the profile name.

  6. Appelez l'une des méthodes suivantes de AgentProfile pour modifier le profil :Call one of the following methods of AgentProfile to change the profile:

    • 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.AddParameter - adds a supported parameter to the profile, where name is the name of the replication agent parameter and value is the specified value. Pour énumérer tous les paramètres d'agent pris en charge pour un type d'agent donné, appelez la méthode EnumParameterInfo .To enumerate all supported agent parameters for a given agent type, call the EnumParameterInfo method. Cette méthode retourne un ArrayList des objets AgentProfileParameterInfo qui représentent tous les paramètres pris en charge.This method returns an ArrayList of AgentProfileParameterInfo objects that represent all supported parameters.

    • RemoveParameter - supprime un paramètre existant du profil, où name est le nom du paramètre d'agent de réplication.RemoveParameter - removes an existing parameter from the profile, where name is the name of the replication agent parameter. Pour énumérer tous les paramètres d'agent actuels définis pour le profil, appelez la méthode EnumParameters .To enumerate all current agent parameters defined for the profile, call the EnumParameters method. Cette méthode retourne un ArrayList des objets AgentProfileParameter qui représentent le paramètre existant de ce profil.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile.

    • 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.ChangeParameter - changes the setting of an existing parameter in the profile, where name is the name of the agent parameter and newValue is the value to which the parameter is being changed. Pour énumérer tous les paramètres d'agent actuels définis pour le profil, appelez la méthode EnumParameters .To enumerate all current agent parameters defined for the profile, call the EnumParameters method. Cette méthode retourne un ArrayList des objets AgentProfileParameter qui représentent le paramètre existant de ce profil.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile. Pour énumérer toutes les valeurs des paramètres d'agent pris en charge, appelez la méthode EnumParameterInfo .To enumerate all supported agent parameter settings, call the EnumParameterInfo method. Cette méthode retourne un ArrayList des objets AgentProfileParameterInfo qui représentent les valeurs prises en charge pour tous les paramètres.This method returns an ArrayList of AgentProfileParameterInfo objects that represent the supported values for all parameters.

Pour supprimer un profil d'agentTo delete an agent profile

  1. Créez une connexion avec le serveur de distribution en utilisant une instance de la classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Créez une instance de la classe AgentProfile .Create an instance of the AgentProfile class. Définissez le nom du profil pour Name et le ServerConnection à partir de l'étape 1 de ConnectionContext.Set the name of the profile for Name and the ServerConnection from step 1 for ConnectionContext.

  3. Appelez la méthode LoadProperties .Call the LoadProperties method. Si cette méthode retourne false, le nom spécifié était incorrect ou le profil n'existe pas sur le serveur.If this method returns false, either the specified name was incorrect or the profile does not exist on the server.

  4. Vérifiez que la propriété Type a la valeur User, ce qui indique un profil de client.Verify that the Type property is set to User, which indicates a customer profile. Vous ne devez pas supprimer un profil qui a une valeur de System pour Type.You should not remove a profile that has a value of System for Type.

  5. Appelez la méthode Remove pour supprimer le profil défini par l'utilisateur représenté par cet objet du serveur.Call the Remove method to remove the user-defined profile represented by this object from the server.

Suivi : Après avoir changé les paramètres de l’AgentFollow Up: After Changing Agent Parameters

Les modifications apportées aux paramètres prennent effet au prochain démarrage de l'Agent.Agent parameter changes take effect the next time the agent is started. Si l'Agent fonctionne en continu, vous devez l'arrêter, puis le redémarrer.If the agent runs continuously, you must stop and restart the agent. À 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.Starting with SQL Server 2017 CU3, some agent parameter changes take effect without having to restart the Agents.

Voir aussiSee Also

Profils de l’Agent de réplication Replication Agent Profiles
Replication Snapshot Agent Replication Snapshot Agent
Replication Log Reader Agent Replication Log Reader Agent
Replication Distribution Agent Replication Distribution Agent
Replication Merge Agent Replication Merge Agent
Replication Queue Reader AgentReplication Queue Reader Agent