Partilhar via


Usar Alertas para eventos do agente de replicação

O SQL Server Management Studio e o MicrosoftSQL ServerAgent fornecem um modo para monitorar eventos, como eventos do agente de replicação, usando alertas. O SQL Server Agent monitora o log do aplicativo do Windows para eventos que são associados com alertas. Se esse evento ocorrer, o SQL Server Agent responderá automaticamente, executando uma tarefa que você definiu e/ou enviando uma mensagem de email ou pager a um operador especificado. O SQL Server inclui um conjunto de alertas predefinidos para agentes de replicação que você pode configurar para executar uma tarefa e/ou notificar um operador. Para obter mais informações sobre como definir uma tarefa a executar, consulte a seção “Automatizando uma resposta para um alerta” neste tópico.

Os alertas a seguir são instalados quando um computador é configurado como um Distribuidor:

ID da mensagem

Alerta predefinido

Condição que aciona o alerta

Insere informações adicionais em msdb..sysreplicationalerts

14150

Replicação: êxito do agente

Agente é encerrado com êxito.

Sim

14151

Replicação: falha do agente

Agente é desligado com um erro.

Sim

14152

Replicação: repetição do agente

O agente desliga após repetir uma operação sem-êxito (agente encontra erro, como servidor não disponível, deadlock, falha de conexão ou falha de tempo limite).

Sim

14157

Replicação: assinatura expirada cancelada

A assinatura expirada foi descartada.

Não

20572

Replicação: assinatura reinicializada após falha de validação

Trabalho de resposta 'Reinicializar assinatura em falha de validação de dados' reinicializa uma assinatura com êxito.

Não

20574

Replicação: falha na validação de dados do assinante

O Agente de Distribuição ou Mesclagem falha na validação de dados.

Sim

20575

Replicação: êxito na validação de dados do assinante

O Agente de Distribuição ou Mesclagem passa na validação de dados.

Sim

20578

Replicação: desligamento personalizado do agente

 

 

22815

Alerta de detecção de conflito ponto a ponto

O Agente de Distribuição detectou um conflito ao tentar aplicar uma alteração a um nó ponto a ponto.

Sim

Além desses alertas, o Replication Monitor fornece um conjunto de avisos e alertas relacionado ao status e ao desempenho. Para obter mais informações, consulte Definir os limites e avisos no Replication Monitor. Também é possível definir alertas para outros eventos de replicação por meio da infraestrutura de alerta do SQL Server. Para obter mais informações, consulte Criar um evento definido pelo usuário.

Para configurar os alertas de replicação predefinidos

Exibindo o log do aplicativo diretamente

Para visualizar o log do aplicativo do Windows, use o recurso Visualizador de Eventos do Windows do Microsoft. O log do aplicativo contém mensagens de erro do SQL Server, assim como mensagens para muitas outras atividades no computador. Ao contrário do log de erros do SQL Server, um novo aplicativo não é criado a cada vez que se inicia o SQL Server (cada sessão do SQL Server grava novos eventos a um log de aplicativos existente); entretanto, é possível especificar quanto tempo os eventos registrados serão retidos. Ao exibir o log do aplicativo do Windows, é possível filtrar o log para eventos específicos. Para obter mais informações, consulte a documentação do Windows.

Automatizando uma resposta para um alerta

A replicação fornece um trabalho de resposta para assinaturas que apresentam falhas na validação dos dados, e também fornece uma estrutura para criar respostas automáticas adicionais para alertas. O trabalho de resposta é intitulado Reinicializar assinaturas em falha de validação de dados e é armazenado no SQL Server Agent, na pasta Trabalhos do SQL Server Management Studio. Para obter informações sobre como habilitar esse trabalho de resposta, consulte Configurar alertas de replicação predefinidos (SQL Server Management Studio). Se artigos em uma publicação transacional falharem na validação, o trabalho de resposta reinicializa apenas esses artigos que falharam. Se artigos em uma publicação de mesclagem apresentarem falha na validação, o trabalho de resposta reinicializa todos os artigos na publicação.

Estrutura para automatizar respostas

Normalmente, quando ocorre um alerta, a única informação se tem que o ajuda a entender o que causou o alerta e a ação apropriada a tomar está na própria mensagem de alerta. A análise dessas informações pode ser suscetível a erros e ser demorada. A replicação torna as respostas automáticas mais fáceis ao fornecer informações adicionais sobre o alerta na tabela do sistema sysreplicationalerts; a informação fornecida já é analisada em um formato simples usado por programas personalizados.

Por exemplo, se a validação dos dados na tabela Sales.SalesOrderHeader no Assinante A falhar, o SQL Server pode acionar a mensagem 20574, notificando essa falha. A mensagem recebida será: "A assinatura do Assinante 'A', para o artigo 'SalesOrderHeader' na publicação 'MyPublication' falhou na validação de dados".

Ao criar uma resposta baseada nessa mensagem, é necessário analisar manualmente o nome do Assinante, nome do artigo e nome da publicação e erro da mensagem. Entretanto, como o Agente de Distribuição e o Agente de Mesclagem gravam a mesma informação no sysreplicationalerts (junto com detalhes como tipo de agente, hora do alerta, banco de dados de publicação, banco de dados do Assinante e tipo de publicação) o trabalho de resposta pode consultar diretamente a informação relevante da tabela. Embora a linha exata não possa ser associada com a instância específica do alerta, a tabela tem a coluna de status, que pode ser usada para controlar as entradas atendidas. As entradas nessa tabela serão mantidas pelo período de retenção do histórico.

Por exemplo, se fosse criada uma resposta de trabalho no Transact-SQL que atendesse à mensagem de alerta 20574, a seguinte lógica poderia ser usada:

declare @publisher sysname, @publisher_db sysname, @publication sysname, @publication_type int, @article sysname, @subscriber sysname, @subscriber_db sysname, @alert_id int
declare hc cursor local for select publisher, publisher_db, publication, publication_type, article, subscriber, 
  subscriber_db, alert_id from 
  msdb..sysreplicationalerts where
  alert_error_code = 20574 and status = 0
  for read only
open hc
fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
while (@@fetch_status <> -1)
begin
/* Do custom work  */
/* Update status to 1, which means the alert has been serviced. This prevents subsequent runs of this job from doing this again */
update msdb..sysreplicationalerts set status = 1 where alert_id = @alert_id
 fetch hc into  @publisher, @publisher_db, @publication, @publication_type, @article, @subscriber, @subscriber_db, @alert_id
end
close hc
deallocate hc

Consulte também

Conceitos

Administração do agente de replicação

Práticas recomendadas para administração de replicação

Monitorando (Replicação)