Trabajar con perfiles del Agente de replicación

Se aplica a: SQL Server Azure SQL Managed Instance

Este tema describe cómo trabajar con los perfiles del Agente de replicación en SQL Server mediante SQL Server Management Studio, Transact-SQL o Replication Management Objects (RMO). El comportamiento de cada agente de replicación está controlado por un conjunto de parámetros que se pueden establecer a través de perfiles de agente. Cada agente tiene un perfil predeterminado y algunos tienen perfiles adicionales predefinidos; solo hay un perfil activo para un agente en cada momento.

En este tema

Uso de SQL Server Management Studio

Para obtener acceso al cuadro de diálogo Perfiles de agente en SQL Server Management Studio

  1. En la página General del cuadro de diálogo Propiedades del distribuidor - <Distribuidor>, haga clic en Valores predeterminados de perfil.

Para obtener acceso al cuadro de diálogo Perfiles de agente en el Monitor de replicación

  • Para abrir el cuadro de diálogo para todos los agentes, haga clic con el botón secundario en un publicador y, a continuación, en Perfiles de agente.

  • Para abrir el cuadro de diálogo para un solo agente:

    1. Expanda un grupo de publicador en el panel izquierdo del Monitor de replicación, expanda un publicador y, a continuación, haga clic en una publicación.

    2. Para los perfiles del Agente de distribución y el Agente de mezcla, haga clic con el botón secundario en una suscripción de la pestaña Todas las suscripciones y, a continuación, en Perfil del agente. Para otros agentes, haga clic con el botón secundario en la pestaña Agentes y, a continuación, haga click en Perfil del agente.

Para especificar un perfil para un agente

  1. Si el cuadro de diálogo Perfiles de agente muestra perfiles para varios agentes, seleccione un agente.

  2. Seleccione un perfil en la columna Predeterminado para nuevos de la cuadrícula Perfiles de agente . De forma predeterminada, el perfil solamente se aplica a los agentes para las publicaciones y suscripciones nuevas.

  3. Para especificar que utilicen el perfil todos los agentes del tipo seleccionado para las publicaciones o suscripciones existentes, haga clic en Cambiar agentes existentes.

Para ver y modificar los parámetros asociados con un perfil

  1. Si el cuadro de diálogo Perfiles de agente muestra perfiles para varios agentes, seleccione un agente.

  2. Haga clic en el botón Propiedades (...) que aparece junto a un perfil.

  3. Vea los parámetros y los valores del cuadro de diálogo Propiedades del perfil <NombrePerfil>.

    • Los parámetros de los perfiles definidos por el usuario se pueden modificar, a diferencia de los parámetros de los perfiles predefinidos del sistema, que no se pueden modificar.

    • Para ver todos los parámetros de un agente, desactive la casilla Mostrar solamente los parámetros utilizados en este perfil . Para obtener información acerca de los parámetros de agentes, vea los vínculos que aparecen al final de este tema.

  4. Haga clic en Cerrar.

Para crear un perfil definido por el usuario

  1. Si el cuadro de diálogo Perfiles de agente muestra perfiles para varios agentes, seleccione un agente.

  2. Haga clic en Nueva.

  3. En el cuadro de diálogo de inicialización Nuevo perfil de agente , seleccione el perfil existente en el que desea basar el nuevo perfil.

  4. En el cuadro de diálogo Nuevo perfil de agente , escriba valores en los cuadros de texto Nombre y Descripción .

  5. Modifique los parámetros para personalizar el perfil. Para ver todos los parámetros de un agente, desactive la casilla Mostrar solamente los parámetros utilizados en este perfil . Para obtener información acerca de los parámetros de agentes, vea los vínculos que aparecen al final de este tema.

  6. Seleccione Aceptar.

Para eliminar un perfil definido por el usuario

  1. Si el cuadro de diálogo Perfiles de agente muestra perfiles para varios agentes, seleccione un agente.

  2. Si un perfil está asociado con uno o más agentes, cambie el perfil para esos agentes:

    1. Seleccione un perfil distinto en la cuadrícula Perfiles de agente .

    2. Haga clic en Cambiar agentes existentes.

      Nota:

      Al hacer esto, cambiará el perfil de todos los agentes del tipo seleccionado para las publicaciones y suscripciones existentes, y no solo de los que usen el perfil que desea eliminar.

  3. Seleccione el perfil que desea eliminar y haga clic en Eliminar.

  4. Seleccione Aceptar.

Usar Transact-SQL

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_typey 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 valores siguientes 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 de un perfil, ejecute sp_change_agent_parameter (Transact-SQL). Especifique el identificador de perfil del paso 1 para @profile_id, el nombre del parámetro que se va a cambiar en @parameter_name y un nuevo valor para el parámetro en @parameter_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 eliminar un perfil de agente

  1. En el distribuidor, ejecute sp_help_agent_profile (Transact-SQL). Especifique uno de los valores siguientes 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 valores siguientes 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, consulte 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 (Transact-SQL)

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

Usar RMO

Para crear un nuevo perfil de agente

  1. Cree una conexión al distribuidor utilizando una instancia de la clase ServerConnection .

  2. Cree una instancia de la clase AgentProfile.

  3. Establezca las siguientes propiedades en el objeto:

    • Name : nombre del perfil.

    • AgentType : un valor AgentType que especifica el tipo de Agente de replicación para el que se crea el perfil.

    • ConnectionContext : la ServerConnection creada en el paso 1.

    • (Opcional) Description : una descripción del perfil.

    • (Opcional) Default : establezca esta propiedad en true si todos los nuevos trabajos de agente para AgentType van a utilizar de forma predeterminada este perfil.

  4. Llame al método Create para crear el perfil en el servidor.

  5. Una vez que el perfil existe en el servidor, puede personalizarlo agregando, quitando o cambiando los valores de parámetros de agente de replicación.

  6. Para asignar el perfil a un trabajo del agente de replicación existente, llame al método AssignToAgent . Pase el nombre de la base de datos de distribución para distributionDBName y el Id. del trabajo para agentID.

Para modificar un perfil de agente existente

  1. Cree una conexión al distribuidor utilizando una instancia de la clase ServerConnection .

  2. Cree una instancia de la clase ReplicationServer. Pase el objeto ServerConnection creado en el paso 1.

  3. Llame al método LoadProperties. Si este método devuelve false, compruebe que el distribuidor existe.

  4. Llame al método EnumAgentProfiles. Pase un valor AgentType para reducir los perfiles devueltos a un tipo específico de agente de replicación.

  5. Obtenga el objeto AgentProfile que desea del ArrayListdevuelto, donde la propiedad Name del objeto coincide con el nombre del perfil.

  6. Llame a uno de los métodos siguientes de AgentProfile para cambiar el perfil:

    • AddParameter : agrega un parámetro compatible al perfil, donde name es el nombre del parámetro del Agente de replicación y value es el valor especificado. Para enumerar todos los parámetros del agente compatibles para un tipo de agente determinado, llame al método EnumParameterInfo . Este método devuelve ArrayList de objetos AgentProfileParameterInfo que representa todos los parámetros compatibles.

    • RemoveParameter : quita un parámetro existente del perfil, donde name es el nombre del parámetro de Agente de replicación. Para enumerar todos los parámetros de agente actuales definidos para el perfil, llame al método EnumParameters . Este método devuelve ArrayList de objetos AgentProfileParameter que representan el parámetro existente para este perfil.

    • ChangeParameter : cambia la configuración de un parámetro existente en el perfil, donde name es el nombre del parámetro del agente y newValue es el valor al que se cambia el parámetro. Para enumerar todos los parámetros de agente actuales definidos para el perfil, llame al método EnumParameters . Este método devuelve ArrayList de objetos AgentProfileParameter que representan el parámetro existente para este perfil. Para enumerar todos los valores de parámetro del agente compatibles, llame al método EnumParameterInfo . Este método devuelve ArrayList de objetos AgentProfileParameterInfo que representa los valores compatibles para todos los parámetros.

Para eliminar un perfil de agente

  1. Cree una conexión al distribuidor utilizando una instancia de la clase ServerConnection .

  2. Cree una instancia de la clase AgentProfile. Establezca el nombre del perfil para Name y la ServerConnection del paso 1 para ConnectionContext.

  3. Llame al método LoadProperties. Si este método devuelve false, significa que el nombre especificado era incorrecto o el perfil no existe en el servidor.

  4. Compruebe que la propiedad Type está establecida en User, que indica un perfil del cliente. No debería quitar ningún perfil que tenga un valor de System para Type.

  5. Llame al método Remove para quitar el perfil definido por el usuario representado por este objeto del servidor.

Seguimiento: después de cambiar los parámetros de agente

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. A partir de SQL Server 2017 CU3, algunos cambios de parámetros de agente surten efecto sin tener que reiniciar los agentes.