Procedura: Utilizzo dei profili agenti di replica (programmazione Transact-SQL della replica)

I profili agenti sono utilizzati per definire i valori predefiniti quando viene creato un processo dell'agente. Ciascun agente dispone di un profilo predefinito e alcuni agenti dispongono anche di profili predefiniti aggiuntivi. È possibile creare profili definiti dall'utente utilizzando le stored procedure di replica. Per ulteriori informazioni sui profili degli agenti, vedere Profili degli agenti di replica.

Nota

È necessario non modificare né eliminare i profili predefiniti. Le modifiche apportate al parametro dell'agente diventano effettive al successivo avvio dell'agente. Se l'agente viene eseguito in modo continuo, è necessario interromperlo e riavviarlo.

Per creare un nuovo profilo agente

  1. Nel server di distribuzione eseguire sp_add_agent_profile (Transact-SQL). Specificare @name, il valore 1 per @profile_type e uno dei seguenti valori per @agent_type:

    Se si desidera impostare il profilo come nuovo profilo predefinito per il tipo di agente di replica, specificare il valore 1 per @default. L'identificatore per il nuovo profilo viene restituito mediante il parametro di output @profile_id. Viene creato un nuovo profilo con un set di parametri del profilo basato sul profilo predefinito per il tipo di agente specificato.

  2. Una volta creato il nuovo profilo, è possibile personalizzarlo aggiungendo, rimuovendo o modificando i parametri predefiniti.

Per modificare un profilo agente esistente

  1. Nel server di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_id nel set di risultati del profilo da modificare.

  2. Nel server di distribuzione eseguire sp_help_agent_parameter (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id. Vengono restituiti tutti i parametri per il profilo. Tenere presente il nome dei parametri del profilo da modificare o rimuovere.

  3. Per modificare il valore di un parametro in un profilo, eseguire 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 @property e un nuovo valore del parametro per @value.

    Nota

    Non è possibile modificare un profilo agente esistente in modo da impostarlo come profilo predefinito di un agente. A tale scopo, è necessario creare un nuovo profilo come profilo predefinito, come indicato nella procedura indicata in precedenza.

  4. Per rimuovere un parametro da un profilo, eseguire 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.

  5. Per aggiungere un nuovo parametro a un profilo è necessario effettuare le seguenti operazioni:

    • Eseguire una query sulla tabella MSagentparameterlist (Transact-SQL) nel server di distribuzione per determinare i parametri del profilo che è possibile impostare per ciascun tipo di agente.

    • Nel server di distribuzione eseguire 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_name e il valore del parametro per @parameter_value.

Per rimuovere un profilo agente

  1. Nel server di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_id nel set di risultati del profilo da rimuovere.

  2. Nel server di distribuzione eseguire sp_drop_agent_profile (Transact-SQL). Specificare l'identificatore del profilo restituito nel passaggio 1 per @profile_id.

Per utilizzare i profili agenti durante la sincronizzazione

  1. Nel server di distribuzione eseguire sp_help_agent_profile (Transact-SQL). Specificare uno dei seguenti valori per @agent_type:

    Vengono restituiti tutti i profili per il tipo di agente specificato. Tenere presente il valore di profile_name nel set di risultati del profilo da utilizzare.

  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. Per ulteriori informazioni, vedere Procedura: Visualizzazione e modifica dei parametri del prompt dei comandi dell'agente di replica (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.

Esempio

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.

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