Utilizzo dei profili agenti di replicaWork with Replication Agent Profiles

In questo argomento viene descritto come utilizzare i profili degli agenti di replica in SQL Server 2017SQL Server 2017 tramite SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQLo RMO (Replication Management Objects).This topic describes how to work with Replication Agent Profiles in SQL Server 2017SQL Server 2017 by using SQL Server Management StudioSQL Server Management Studio, Transact-SQLTransact-SQL, or Replication Management Objects (RMO). Il comportamento di ogni agente di replica è controllato da un set di parametri che è possibile impostare tramite i profili agenti.The behavior of each replication agent is controlled by a set of parameters that can be set through agent profiles. Ogni agente dispone di un profilo predefinito e alcuni anche di profili predefiniti aggiuntivi. In un momento specifico, per un agente è attivo un solo profilo.Each agent has a default profile, and some have additional predefined profiles; at a given time, only one profile is active for an agent.

Contenuto dell'argomentoIn This Topic

Utilizzo di SQL Server Management Studio Using SQL Server Management Studio

Per accedere alla finestra di dialogo Profili agenti da SQL Server Management Studio To access the Agent Profiles dialog box from SQL Server Management Studio

  1. Nella pagina Generale della finestra di dialogo Proprietà database di distribuzione - <DatabaseDistribuzione> fare clic su Impostazioni predefinite profili.On the General page of the Distributor Properties - <Distributor> dialog box, click Profile Defaults.

Per accedere alla finestra di dialogo Profili agenti da Monitoraggio replicaTo access the Agent Profiles dialog box from Replication Monitor

  • Per aprire la finestra di dialogo per tutti gli agenti, fare clic con il pulsante destro del mouse su un server di pubblicazione e quindi scegliere Profili agenti.To open the dialog box for all agents, right-click a Publisher, and then click Agent Profiles.

  • Per aprire la finestra di dialogo per un singolo agente:To open the dialog box for a single agent:

    1. Espandere un gruppo di server di pubblicazione nel riquadro a sinistra di Monitoraggio replica, espandere un server di pubblicazione e quindi fare clic su una pubblicazione.Expand a Publisher group in the left pane of Replication Monitor, expand a Publisher, and then click a publication.

    2. Per i profili dell'agente di distribuzione e dell'agente di merge, fare clic con il pulsante destro del mouse su una sottoscrizione nella scheda Tutte le sottoscrizioni e quindi scegliere Profilo agente.For Distribution Agent and Merge Agent profiles, right-click a subscription on the All Subscriptions tab, and then click Agent Profile. Per gli altri agenti, fare clic con il pulsante destro del mouse sull'agente nella scheda Agenti , quindi scegliere Profilo agente.For other agents, right-click the agent on the Agents tab, and then click Agent Profile.

Per specificare un profilo per un agente To specify a profile for an agent

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Selezionare un profilo nella colonna Predefinito per i nuovi agenti della griglia Profili agenti .Select a profile in the Default for new column of the Agent profiles grid. Per impostazione predefinita, il profilo viene applicato solo agli agenti per le nuove pubblicazioni e sottoscrizioni.By default, the profile is only applied to agents for new publications and subscriptions.

  3. Per specificare che tutti gli agenti del tipo selezionato per le pubblicazioni o le sottoscrizioni esistenti devono utilizzare questo profilo, fare clic su Modifica agenti esistenti.To specify that all agents of the selected type for existing publications or subscriptions should use this profile, click Change existing agents.

Per visualizzare e modificare i parametri associati a un profilo To view and edit the parameters associated with a profile

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Fare clic sul pulsante delle proprietà () accanto a un profilo.Click the properties button () next to a profile.

  3. Visualizzare i parametri e i valori nella finestra di dialogo Proprietà profilo <NomeProfilo>.View the parameters and values in the <ProfileName> Profile Properties dialog box.

    • È possibile modificare i parametri nei profili definiti dall'utente, ma non quelli nei profili di sistema predefiniti.Parameters in user-defined profiles can be edited; parameters in predefined system profiles cannot.

    • Per visualizzare tutti i parametri per un agente, deselezionare la casella di controllo Mostra solo i parametri utilizzati in questo profilo .To view all parameters for an agent, clear the Show only parameters used in this profile check box. Per informazioni sui parametri degli agenti, vedere i collegamenti alla fine di questo argomento.For information about agent parameters, see the links at the end of this topic.

  4. Scegliere Chiudi.Click Close.

Per creare un profilo definito dall'utente To create a user-defined profile

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Fare clic su Nuovo.Click New.

  3. Nella finestra di dialogo di inizializzazione Nuovo profilo agente selezionare un profilo esistente su cui basare il nuovo profilo.In the New Agent Profile initialization dialog box, select an existing profile on which to base the new profile.

  4. Nella finestra di dialogo Nuovo profilo agente immettere i valori nelle caselle di testo Nome e Descrizione .In the New Agent Profile dialog box, enter values in the Name and Description text boxes.

  5. Modificare i parametri per personalizzare il profilo.Modify parameters to tailor the profile. Per visualizzare tutti i parametri per un agente, deselezionare la casella di controllo Mostra solo i parametri utilizzati in questo profilo .To view all parameters for an agent, clear the Show only parameters used in this profile check box. Per informazioni sui parametri degli agenti, vedere i collegamenti alla fine di questo argomento.For information about agent parameters, see the links at the end of this topic.

  6. Fare clic su OK.Click OK.

Per eliminare un profilo definito dall'utente To delete a user-defined profile

  1. Se nella finestra di dialogo Profili agenti vengono visualizzati i profili di più agenti, selezionare un agente.If the Agent Profiles dialog box displays profiles for more than one agent, select an agent.

  2. Se un profilo è associato a uno o più agenti, modificare il profilo per tali agenti:If a profile is associated with one or more agents, change the profile for those agents:

    1. Selezionare un altro profilo nella griglia Profili agenti .Select a different profile in the Agent profiles grid.

    2. Fare clic su Modifica agenti esistenti.Click Change existing agents.

      Nota

      Verrà modificato il profilo di tutti gli agenti del tipo selezionato per le pubblicazioni o le sottoscrizioni esistenti e non solo di quelli che utilizzano il profilo che si desidera eliminare.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. Selezionare il profilo che si desidera eliminare, quindi fare clic su Elimina.Select the profile you want to delete, and then click Delete.

  4. Fare clic su OK.Click OK.

Utilizzo di Transact-SQL Using Transact-SQL

Per creare un nuovo profilo agente To create a new agent profile

  1. Nel database di distribuzione eseguire sp_add_agent_profile (Transact-SQL).At the Distributor, execute sp_add_agent_profile (Transact-SQL). Specificare @name, il valore 1 per @profile_typee uno dei seguenti valori per @agent_type:Specify @name, a value of 1 for @profile_type, and one of the following values for @agent_type:

  2. Una volta creato il nuovo profilo, è possibile personalizzarlo aggiungendo, rimuovendo o modificando i parametri predefiniti.After the new profile has been created, add, remove, or modify the default parameters to customize the profile.

Per modificare un profilo agente esistente To modify an existing agent profile

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:Specify one of the following values for @agent_type:

  2. Nel database di distribuzione eseguire sp_help_agent_parameter (Transact-SQL).At the Distributor, execute sp_help_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id.Specify the profile identifier from step 1 for @profile_id. Vengono restituiti tutti i parametri per il profilo.This returns all parameters for the profile. Tenere presente il nome dei parametri del profilo da modificare o rimuovere.Note the name of any parameters to modify or remove from the profile.

  3. Per modificare il valore di un parametro in un profilo, eseguire sp_change_agent_profile (Transact-SQL).To change the value of a parameter in a profile, execute sp_change_agent_profile (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id, il nome del parametro da modificare per @propertye un nuovo valore del parametro per @value.Specify the profile identifier from step 1 for @profile_id, the name of the parameter to change for @property, and a new value for the parameter for @value.

    Nota

    Non è possibile modificare un profilo agente esistente in modo da impostarlo come profilo predefinito di un agente.You cannot change an existing agent profile to become the default profile for an agent. A tale scopo, è necessario creare un nuovo profilo come profilo predefinito, come indicato nella procedura indicata in precedenza.You must instead create a new profile as the default profile, as shown in the previous procedure.

  4. Per rimuovere un parametro da un profilo, eseguire sp_drop_agent_parameter (Transact-SQL).To remove a parameter from a profile, execute sp_drop_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id e il nome del parametro da rimuovere per @parameter_name.Specify the profile identifier from step 1 for @profile_id and the name of the parameter to remove for @parameter_name.

  5. Per aggiungere un nuovo parametro a un profilo è necessario effettuare le seguenti operazioni:To add a new parameter to a profile, you must do the following:

    • Eseguire una query sulla tabella MSagentparameterlist (Transact-SQL) nel database di distribuzione per determinare i parametri del profilo che è possibile impostare per ogni tipo di agente.Query the MSagentparameterlist (Transact-SQL) table at the Distributor to determine which profile parameters can be set for each agent type.

    • Nel database di distribuzione eseguire sp_add_agent_parameter (Transact-SQL).At the Distributor, execute sp_add_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id, il nome di un parametro valido da aggiungere per @parameter_namee il valore del parametro per @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.

Per eliminare un profilo agente To delete an agent profile

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:Specify one of the following values for @agent_type:

  2. Nel database di distribuzione eseguire sp_drop_agent_profile (Transact-SQL).At the Distributor, execute sp_drop_agent_profile (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id.Specify the profile identifier from step 1 for @profile_id.

Per utilizzare i profili agenti durante la sincronizzazione To use agent profiles during synchronization

  1. Nel database di distribuzione eseguire sp_help_agent_profile (Transact-SQL).At the Distributor, execute sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:Specify one of the following values for @agent_type:

  2. Se l'agente è avviato da un processo dell'agente, modificare il passaggio del processo che avvia l'agente per specificare il valore di profile_name ottenuto nel passaggio 1 dopo il parametro della riga di comando -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. Per altre informazioni, vedere Visualizzare e modificare i parametri del prompt dei comandi dell'agente di replica (SQL Server Management Studio).For more information, see View and Modify Replication Agent Command Prompt Parameters (SQL Server Management Studio).

  3. Quando si avvia l'agente dal prompt dei comandi, specificare il valore di profile_name ottenuto nel passaggio 1 dopo il parametro della riga di comando -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.

Esempio (Transact-SQL) Example (Transact-SQL)

In questo esempio viene creato un profilo personalizzato per l'agente di merge denominato custom_merge, viene modificato il valore del parametro -UploadReadChangesPerBatch , viene aggiunto un nuovo parametro -ExchangeType e vengono restituite informazioni sul profilo creato.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

Utilizzo di RMO Using RMO

Per creare un nuovo profilo agente To create a new agent profile

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Creare un'istanza della classe AgentProfile .Create an instance of the AgentProfile class.

  3. Impostare le proprietà indicate di seguito nell'oggetto.Set the following properties on the object:

  4. Chiamare il metodo Create per creare il profilo nel server.Call the Create method to create the profile on the server.

  5. Una volta reso disponibile il profilo nel server, è possibile personalizzarlo aggiungendo, rimuovendo o modificando i valori dei parametri dell'agente di replica.Once the profile exists on the server, you can customize it by adding, removing, or changing the values of replication agent parameters.

  6. Per assegnare il profilo a un processo dell'agente di replica esistente, chiamare il metodo AssignToAgent .To assign the profile to an existing replication agent job, call the AssignToAgent method. Passare il nome del database di distribuzione per distributionDBName e l'ID del processo per agentID.Pass the name of the distribution database for distributionDBName and the ID of the job for agentID.

Per modificare un profilo agente esistente To modify an existing agent profile

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Creare un'istanza della classe ReplicationServer .Create an instance of the ReplicationServer class. Passare l'oggetto ServerConnection creato nel passaggio 1.Pass the ServerConnection object created in step 1.

  3. Chiamare il metodo LoadProperties .Call the LoadProperties method. Se il metodo restituisce false, verificare che il server di distribuzione esista.If this method returns false, verify that the Distributor exists.

  4. Chiamare il metodo EnumAgentProfiles .Call the EnumAgentProfiles method. Passare un valore di AgentType per limitare i profili restituiti a un tipo specifico di agente di replica.Pass an AgentType value to narrow down the returned profiles to a specific type of replication agent.

  5. Ottenere l'oggetto AgentProfile desiderato dall'oggetto ArrayListrestituito, dove la proprietà Name dell'oggetto corrisponde al nome del profilo.Get the desired AgentProfile object from the returned ArrayList, where the Name property of the object matches the profile name.

  6. Chiamare uno dei metodi di AgentProfile indicati di seguito per modificare il profilo.Call one of the following methods of AgentProfile to change the profile:

    • AddParameter : aggiunge un parametro supportato al profilo, dove name è il nome del parametro dell'agente di replica e value è il valore specificato.AddParameter - adds a supported parameter to the profile, where name is the name of the replication agent parameter and value is the specified value. Per enumerare tutti i parametri dell'agente supportati per un tipo di agente specificato, chiamare il metodo EnumParameterInfo .To enumerate all supported agent parameters for a given agent type, call the EnumParameterInfo method. Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameterInfo che rappresentano tutti i parametri supportati.This method returns an ArrayList of AgentProfileParameterInfo objects that represent all supported parameters.

    • RemoveParameter : rimuove un parametro esistente dal profilo, dove name è il nome del parametro dell'agente di replica.RemoveParameter - removes an existing parameter from the profile, where name is the name of the replication agent parameter. Per enumerare tutti i parametri dell'agente corrente definiti per il profilo, chiamare il metodo EnumParameters .To enumerate all current agent parameters defined for the profile, call the EnumParameters method. Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameter che rappresentano il parametro esistente per il profilo.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile.

    • ChangeParameter : modifica l'impostazione di un parametro esistente nel profilo, dove name è il nome del parametro dell'agente e newValue è il valore nel quale viene modificato il parametro.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. Per enumerare tutti i parametri dell'agente corrente definiti per il profilo, chiamare il metodo EnumParameters .To enumerate all current agent parameters defined for the profile, call the EnumParameters method. Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameter che rappresentano il parametro esistente per il profilo.This method returns an ArrayList of AgentProfileParameter objects that represent the existing parameter for this profile. Per enumerare tutte le impostazioni del parametro dell'agente supportate, chiamare il metodo EnumParameterInfo .To enumerate all supported agent parameter settings, call the EnumParameterInfo method. Questo metodo restituisce una classe ArrayList di oggetti AgentProfileParameterInfo che rappresentano i valori supportati per tutti i parametri.This method returns an ArrayList of AgentProfileParameterInfo objects that represent the supported values for all parameters.

Per eliminare un profilo agente To delete an agent profile

  1. Creare una connessione al database di distribuzione tramite un'istanza della classe ServerConnection .Create a connection to the Distributor by using an instance of the ServerConnection class.

  2. Creare un'istanza della classe AgentProfile .Create an instance of the AgentProfile class. Impostare il nome del profilo per la proprietà Name e l'oggetto ServerConnection creato nel passaggio 1 per la proprietà ConnectionContext.Set the name of the profile for Name and the ServerConnection from step 1 for ConnectionContext.

  3. Chiamare il metodo LoadProperties .Call the LoadProperties method. Se il metodo restituisce false, il nome specificato non è corretto o il profilo non esiste nel server.If this method returns false, either the specified name was incorrect or the profile does not exist on the server.

  4. Verificare che la proprietà Type sia impostata su User, in modo da indicare un profilo del cliente.Verify that the Type property is set to User, which indicates a customer profile. Non è necessario rimuovere un profilo con valore System per Type.You should not remove a profile that has a value of System for Type.

  5. Chiamare il metodo Remove per rimuovere dal server il profilo definito dall'utente rappresentato da questo oggetto.Call the Remove method to remove the user-defined profile represented by this object from the server.

Completamento: dopo avere modificato i parametri degli agenti Follow Up: After Changing Agent Parameters

Le modifiche apportate al parametro dell'agente verranno applicate al successivo avvio dell'agente.Agent parameter changes take effect the next time the agent is started. Se l'agente viene eseguito in modo continuo, è necessario arrestarlo e riavviarlo.If the agent runs continuously, you must stop and restart the agent.

Vedere ancheSee Also

Profili degli agenti di replica 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