Cómo trabajar con perfiles de agente de replicación (programación de la replicación con Transact-SQL)

Los perfiles de agente se usan para definir los valores predeterminados cuando se crea un trabajo de agente. Cada agente tiene un perfil predeterminado y algunos tienen perfiles adicionales predefinidos. Puede crear perfiles definidos por el usuario mediante procedimientos almacenados de replicación. Para obtener más información acerca de los perfiles de agente, vea Perfiles del Agente de replicación.

Nota

No debe modificar ni eliminar los perfiles predefinidos. Los cambios en los parámetros del agente tendrán efecto la próxima vez que se inicie el agente. Si el agente se ejecuta sin interrupción, debe detenerlo y reiniciarlo.

Para crear un nuevo perfil de agente

  1. En el distribuidor, ejecute sp_add_agent_profile (Transact-SQL). Especifique un valor en @name, el valor 1 para @profile_type y uno de los valores siguientes para @agent_type:

    Si este perfil se va a convertir en el nuevo perfil predeterminado para su tipo de agente de replicación, especifique el valor 1 en @default. El identificador del nuevo perfil se devuelve con el parámetro de salida @profile_id. De esta forma crea un nuevo perfil con un conjunto de parámetros de perfil basados en el perfil predeterminado del tipo de agente indicado.

  2. Una vez creado el nuevo perfil, agregue, quite o modifique los parámetros predeterminados para personalizarlo.

Para modificar un perfil de agente existente

  1. En el distribuidor, ejecute sp_help_agent_profile (Transact-SQL). Especifique uno de los siguientes valores en @agent_type:

    De esta forma se devuelven todos los perfiles del tipo de agente especificado. Anote el valor de profile_id en el conjunto de resultados correspondiente al perfil que va a cambiar.

  2. En el distribuidor, ejecute sp_help_agent_parameter (Transact-SQL). Especifique el identificador de perfil del paso 1 en @ profile_id. De esta forma se devuelven todos los parámetros del perfil. Anote el nombre de cualquier parámetro que desee modificar o quitar del perfil.

  3. Para cambiar el valor de un parámetro en un perfil, ejecute sp_change_agent_profile (Transact-SQL). Especifique el identificador de perfil del paso 1 en @ profile_id, el nombre del parámetro que va a cambiar en @propertyy un nuevo valor para el parámetro en @value.

    Nota

    No puede cambiar un perfil de agente existente para convertirlo en el perfil predeterminado de un agente. Debe crear un nuevo perfil como perfil predeterminado, como se muestra en el procedimiento anterior.

  4. Para quitar un parámetro de un perfil, ejecute sp_drop_agent_parameter (Transact-SQL). Especifique el identificador de perfil del paso 1 en @ profile_id y el nombre del parámetro que va a quitar en @parameter_name.

  5. Para agregar un nuevo parámetro a un perfil, debe hacer lo siguiente:

    • Consulte la tabla MSagentparameterlist (Transact-SQL) en el distribuidor para determinar qué parámetros de perfil se pueden establecer en cada tipo de agente.

    • En el distribuidor, ejecute sp_add_agent_parameter (Transact-SQL). Especifique el identificador de perfil del paso 1 en @ profile_id, el nombre del parámetro válido que va a agregar en @parameter_namey el valor del parámetro en @parameter_value.

Para quitar un perfil de agente

  1. En el distribuidor, ejecute sp_help_agent_profile (Transact-SQL). Especifique uno de los siguientes valores en @agent_type:

    De esta forma se devuelven todos los perfiles del tipo de agente especificado. Anote el valor de profile_id en el conjunto de resultados correspondiente al perfil que va a quitar.

  2. En el distribuidor, ejecute sp_drop_agent_profile (Transact-SQL). Especifique el identificador de perfil del paso 1 en @ profile_id.

Para usar perfiles de agente durante la sincronización

  1. En el distribuidor, ejecute sp_help_agent_profile (Transact-SQL). Especifique uno de los siguientes valores en @agent_type:

    De esta forma se devuelven todos los perfiles del tipo de agente especificado. Anote el valor de profile_name en el conjunto de resultados correspondiente al perfil que va a usar.

  2. Si el agente se inicia a partir de un trabajo de agente, modifique el paso de trabajo que inicia el agente para especificar el valor de profile_name obtenido en el paso 1 después del parámetro de línea de comandos -ProfileName. Para obtener más información, vea Cómo ver y modificar parámetros del símbolo del sistema de los agentes de replicación (SQL Server Management Studio).

  3. Al iniciar el agente desde el símbolo del sistema, especifique el valor de profile_name obtenido en el paso 1 después del parámetro de línea de comandos -ProfileName.

Ejemplo

Este ejemplo crea un perfil personalizado para el Agente de mezcla denominado custom_merge, cambia el valor del parámetro -UploadReadChangesPerBatch, agrega un nuevo parámetro -ExchangeType y devuelve información sobre el perfil que se crea.

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