Trabalhar com perfis do agente de replicação

Aplica-se a: SQL Server Instância Gerenciada de SQL do Azure

Este tópico descreve como trabalhar com os perfis de agente de replicação no SQL Server usando o SQL Server Management Studio, o Transact-SQL ou o Replication Management Objects (RMO). O comportamento de cada agente de replicação é controlado por um conjunto de parâmetros que podem ser definidos através dos perfis de agente. Cada agente tem um perfil padrão, e alguns têm perfis adicionais predefinidos; em um determinado momento, apenas um perfil está ativo para um agente.

Neste tópico

Como usar o SQL Server Management Studio.

Para acessar a caixa de diálogo Perfis do Agente a partir do SQL Server Management Studio

  1. Na página Geral da caixa de diálogo Propriedades do Distribuidor – <Distribuidor>, clique em Padrões de Perfil.

Para acessar a caixa de diálogo Perfis do Agente a partir do Replication Monitor

  • Para abrir a caixa de diálogo para todos os agentes, clique com o botão direito em um Publicador e, em seguida, clique em Perfis do Agente.

  • Para abrir a caixa de diálogo para um único agente:

    1. Expanda um Grupo do publicador no painel esquerdo do Replication Monitor, expanda um Publicador e, em seguida, clique em uma publicação.

    2. Para os perfis de Distribution Agent ou Merge Agent, clique em uma assinatura com o botão direito na guia Todas as Assinaturas e então clique em Perfil do Agente. Para outros agentes, clique com o botão direito do mouse no agente na guia Agentes e, em seguida, clique em Perfil do Agente.

Para especificar o perfil para um agente

  1. Se a caixa de diálogo Perfis do Agente exibir perfis para mais de um agente, selecione um agente.

  2. Selecione um perfil na coluna Padrão para Novo da grade Perfis do Agente . Por padrão, o perfil só é aplicado aos agentes para publicações e assinaturas novas.

  3. Para especificar que todos os agentes de um tipo selecionado para publicações ou assinaturas existentes usem esse perfil, clique em Alterar agentes existentes.

Para exibir e editar os parâmetros associados a um perfil

  1. Se a caixa de diálogo Perfis do Agente exibir perfis para mais de um agente, selecione um agente.

  2. Clique no botão de propriedades () ao lado de um perfil.

  3. Exiba os parâmetros e valores na caixa de diálogo Propriedades do Perfil <ProfileName>.

    • Os parâmetros em perfis definidos pelo usuário podem ser editados; os parâmetros em perfis de sistema predefinidos não podem.

    • Para exibir todos os parâmetros de um agente, desmarque a caixa de seleção Mostrar apenas os parâmetros usados neste perfil . Para obter informações sobre parâmetros de agente, consulte os links no final deste tópico.

  4. Clique em Fechar.

Para criar um perfil definido pelo usuário

  1. Se a caixa de diálogo Perfis do Agente exibir perfis para mais de um agente, selecione um agente.

  2. Clique em Novo.

  3. Na caixa de diálogo de inicialização Novo Perfil do Agente , selecione um perfil existente no qual o novo perfil será baseado.

  4. Na caixa de diálogo Novo Perfil do Agente , digite os valores nas caixas de texto Nome e Descrição .

  5. Modificar parâmetros para personalizar o perfil. Para exibir todos os parâmetros de um agente, desmarque a caixa de seleção Mostrar apenas os parâmetros usados neste perfil . Para obter informações sobre parâmetros de agente, consulte os links no final deste tópico.

  6. Selecione OK.

Para excluir um perfil definido pelo usuário

  1. Se a caixa de diálogo Perfis do Agente exibir perfis para mais de um agente, selecione um agente.

  2. Se um perfil for associado a um ou mais agentes, altere o perfil para esses agentes:

    1. Selecione um perfil diferente na grade Perfis do Agente .

    2. Clique em Alterar Agentes Existentes.

      Observação

      Isso alterará o perfil para todos os agentes do tipo selecionado para publicações ou assinaturas existentes, não apenas para os que usam o perfil que se deseja excluir.

  3. Selecione o perfil a ser excluído e, em seguida, clique em Excluir.

  4. Selecione OK.

Usando o Transact-SQL

Para criar um perfil novo de agente

  1. No Distribuidor, execute sp_add_agent_profile (Transact-SQL). Especifique @name, um valor 1 para @profile_typee um dos seguintes valores para @agent_type:

    Se esse perfil se tornar o novo perfil padrão para seu tipo de agente de replicação, especifique o valor 1 para @default. O identificador para o novo perfil retorna usando o parâmetro de saída @profile_id . Isso cria um perfil novo com um conjunto de parâmetros de perfis baseado no perfil padrão para o tipo de agente especificado.

  2. Depois que o perfil novo for criado, adicione, remova ou modifique os parâmetros padrão para personalizar o perfil.

Para modificar um perfil de agente existente

  1. No Distribuidor, execute sp_help_agent_profile (Transact-SQL). Especifique um dos valores a seguir para @agent_type:

    Isso retorna todos os perfis para o tipo especificado de agente. Observe o valor de profile_id no conjunto de resultados para o perfil a ser alterado.

  2. No Distribuidor, execute sp_help_agent_parameter (Transact-SQL). Especifique o identificador de perfil da etapa 1 para @profile_id. Isso retorna todos os parâmetros para o perfil. Observe o nome de qualquer parâmetro a modificar ou remover do perfil.

  3. Para alterar o valor de um parâmetro em um perfil, execute sp_change_agent_parameter (Transact-SQL). Especifique o identificador de perfil da etapa 1 em @profile_id, o nome do parâmetro a ser alterado em @parameter_name e um novo valor do parâmetro em @parameter_value.

    Observação

    Você não pode alterar um perfil de agente existente para se tornar o perfil padrão para um agente. Em vez disso, você deve criar um perfil novo como perfil padrão, como mostrado no procedimento anterior.

  4. Para remover um parâmetro de um perfil, execute sp_drop_agent_parameter (Transact-SQL). Especifique o identificador de perfil da etapa 1 para @profile_id e o nome do parâmetro a remover para @parameter_name.

  5. Para adicionar um parâmetro novo a um perfil, você deve fazer o seguinte:

    • Examine a tabela do MSagentparameterlist (Transact-SQL) no Distribuidor para determinar quais parâmetros de perfil podem ser definidos para cada tipo de agente.

    • No Distribuidor, execute sp_add_agent_parameter (Transact-SQL). Especifique o identificador de perfil da etapa 1 para @profile_id, o nome de um parâmetro válido para adicionar a @parameter_namee o valor do parâmetro para @parameter_value.

Para excluir um perfil de agente

  1. No Distribuidor, execute sp_help_agent_profile (Transact-SQL). Especifique um dos valores a seguir para @agent_type:

    Isso retorna todos os perfis para o tipo especificado de agente. Observe o valor de profile_id no conjunto de resultados para o perfil a remover.

  2. No Distribuidor, execute sp_drop_agent_profile (Transact-SQL). Especifique o identificador de perfil da etapa 1 para @profile_id.

Para usar perfis de agente durante sincronização

  1. No Distribuidor, execute sp_help_agent_profile (Transact-SQL). Especifique um dos valores a seguir para @agent_type:

    Isso retorna todos os perfis para o tipo especificado de agente. Observe o valor de profile_name no conjunto de resultados para o perfil a usar.

  2. Se o agente for iniciado a partir do trabalho de agente, edite a etapa de trabalho que inicia o agente para especificar o valor profile_name obtido na etapa 1, depois do parâmetro do comando em linha -ProfileName . Para obter mais informações, consulte Exibir e modificar parâmetros do prompt de comando do agente de replicação (SQL Server Management Studio).

  3. Ao iniciar o agente no prompt de comando, especifique o valor profile_name obtido na etapa 1, depois do parâmetro da linha de comando -ProfileName .

Exemplo (Transact-SQL)

Este exemplo cria um perfil personalizado para o Agente de Mesclagem nomeado custom_merge, altera o valor do parâmetro -UploadReadChangesPerBatch , adiciona um novo parâmetro -ExchangeType e retorna informações sobre o perfil criado.

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

Usando RMO

Para criar um perfil novo de agente

  1. Crie uma conexão para o Distribuidor usando uma instância da classe ServerConnection .

  2. Criar uma instância da classe AgentProfile.

  3. Defina as seguintes propriedades no objeto:

    • Name - o nome para o perfil.

    • AgentType - um valor AgentType que especifica o tipo de agente de replicação para o qual está sendo criado o perfil.

    • ConnectionContext - o ServerConnection criado na etapa 1.

    • (Opcional) Description - uma descrição do perfil.

    • (Opcional) Default - defina essa propriedade para true se todos os trabalhos de agente novos para essa AgentType utilizarão, por padrão, esse perfil.

  4. Chame o método Create para criar o perfil no servidor.

  5. Uma vez que o perfil existir no servidor, você poderá personalizá-lo adicionando, removendo ou modificando os valores dos parâmetros do agente de replicação.

  6. Para atribuir o perfil a um trabalho de agente de replicação existente, chame o método AssignToAgent . Passe o nome do banco de dados de distribuição para distributionDBName e a ID do trabalho para agentID.

Para modificar um perfil de agente existente

  1. Crie uma conexão para o Distribuidor usando uma instância da classe ServerConnection .

  2. Criar uma instância da classe ReplicationServer. Passe o objeto ServerConnection criado na etapa 1.

  3. Chame o método LoadProperties . Se esse método retornar false, verifique se o Distribuidor existe.

  4. Chame o método EnumAgentProfiles . Passe um valor AgentType para reduzir os perfis retornados a um tipo específico de agente de replicação.

  5. Obtenha o objeto desejado AgentProfile dos ArrayListretornados, nos quais a propriedade Name do objeto corresponda ao nome do perfil.

  6. Chame um dos métodos seguintes de AgentProfile para alterar o perfil:

    • AddParameter - adiciona um parâmetro com suporte ao perfil, onde name é o nome parâmetro do agente de replicação e value é o valor especificado. Para enumerar todos os parâmetros de agente com suporte para um determinado tipo de agente, chame o método EnumParameterInfo . Este método retorna um ArrayList de objetos AgentProfileParameterInfo que representam todos os parâmetros com suporte.

    • RemoveParameter - remove um parâmetro existente do perfil, onde name é o nome do parâmetro do agente de replicação. Para enumerar todos os parâmetros de agente atuais definidos para o perfil, chame o método EnumParameters . Este método retorna um ArrayList de objetos AgentProfileParameter que representam o parâmetro existente para este perfil.

    • ChangeParameter - altera a configuração de um parâmetro existente no perfil, onde name é o nome do parâmetro do agente de replicação e newValue é o valor para o qual o parâmetro está sendo alterado. Para enumerar todos os parâmetros de agente atuais definidos para o perfil, chame o método EnumParameters . Este método retorna um ArrayList de objetos AgentProfileParameter que representam o parâmetro existente para este perfil. Para enumerar todas as configurações de parâmetro de agente com suporte, chame o método EnumParameterInfo . Este método retorna um ArrayList de objetos AgentProfileParameterInfo que representam os valores com suporte para todos os parâmetros.

Para excluir um perfil de agente

  1. Crie uma conexão para o Distribuidor usando uma instância da classe ServerConnection .

  2. Criar uma instância da classe AgentProfile. Defina o nome do perfil para Name e o ServerConnection da etapa 1 para ConnectionContext.

  3. Chame o método LoadProperties . Se este método retornar false, o banco de dados com o nome especificado estava incorreto ou o perfil não existe no servidor.

  4. Verifique se a propriedade Type é definida como User, o que indica um perfil de cliente. Você não deve remover um perfil que possui um valor de System para Type.

  5. Chame o método Remove para remover o perfil definido pelo usuário representado por esse objeto do servidor.

Acompanhamento: Depois de alterar parâmetros do agente

As alterações do parâmetro de agente entrarão em vigor na próxima vez o agente for iniciado. Se o agente ficar executando continuamente, será necessário parar e reiniciar o agente. Começando com o SQL Server 2017 CU3, algumas alterações de parâmetro de agente entram em vigor sem precisar reiniciar os agentes.