Compartilhar via


sp_add_alert (Transact-SQL)

Aplica-se: SQL Server

Cria um alerta.

Convenções de sintaxe de Transact-SQL

Sintaxe

sp_add_alert [ @name = ] N'name'
     [ , [ @message_id = ] message_id ]
     [ , [ @severity = ] severity ]
     [ , [ @enabled = ] enabled ]
     [ , [ @delay_between_responses = ] delay_between_responses ]
     [ , [ @notification_message = ] N'notification_message' ]
     [ , [ @include_event_description_in = ] include_event_description_in ]
     [ , [ @database_name = ] N'database_name' ]
     [ , [ @event_description_keyword = ] N'event_description_keyword' ]
     [ , { [ @job_id = ] job_id | [ @job_name = ] N'job_name' } ]
     [ , [ @raise_snmp_trap = ] raise_snmp_trap ]
     [ , [ @performance_condition = ] N'performance_condition' ]
     [ , [ @category_name = ] N'category_name' ]
     [ , [ @wmi_namespace = ] N'wmi_namespace' ]
     [ , [ @wmi_query = ] N'wmi_query' ]
[ ; ]

Argumentos

[ @name = ] N'name'

O nome do alerta. O nome é exibido na mensagem de email ou de pager enviada em resposta ao alerta. Ele deve ser exclusivo e pode conter o caractere de porcentagem (%). @name é sysname, sem padrão.

@message_id [ = ] message_id

O número de erro da mensagem que define o alerta. (Geralmente corresponde a um número de erro na sysmessages tabela.) @message_id é int, com um padrão de 0. Se @severity for usado para definir o alerta, @message_id deverá ser 0 ou NULL.

Somente sysmessages erros gravados no log de aplicativos do Microsoft Windows podem fazer com que um alerta seja enviado.

@severity [ = ] gravidade

O nível de gravidade (de 1 até 25) que define o alerta. @severity é int, com um padrão de 0. Qualquer mensagem do SQL Server armazenada sysmessages na tabela enviada para o log de aplicativos do Windows com a gravidade indicada faz com que o alerta seja enviado. Se @message_id for usado para definir o alerta, @severity deverá ser 0.

@enabled [ = ] habilitado

Indica o status atual do alerta. @enabled é tinyint, com um padrão de 1 (enabled). Se 0, o alerta não está habilitado e não é acionado.

@delay_between_responses [ = ] delay_between_responses

O período de espera, em segundos, entre respostas ao alerta. @delay_between_responses é int, com um padrão de 0, o que significa que não há espera entre as respostas (cada ocorrência do alerta gera uma resposta). A resposta pode acontecer de uma destas maneiras ou de ambas:

  • Uma ou mais notificações enviadas por e-mail ou pager
  • Um trabalho a ser executado

Ao definir esse valor, é possível impedir, por exemplo, que mensagens de email indesejadas sejam enviadas quando um alerta ocorre repetidamente em um curto período de tempo.

@notification_message [ = ] N'notification_message'

Uma mensagem adicional opcional enviada ao operador como parte da notificação por email, net sendou pager. @notification_message é nvarchar(512), com um padrão de NULL. Especificar @notification_message é útil para adicionar notas especiais, como procedimentos corretivos.

@include_event_description_in [ = ] include_event_description_in

Se a descrição do erro do SQL Server deve ser incluída como parte da mensagem de notificação. @include_event_description_in é tinyint, com um padrão de 5 (e-mail e net send), e pode ter um ou mais desses valores combinados com um OR operador lógico.

Importante

O pager e net send as opções serão removidos do SQL Server Agent em uma versão futura do SQL Server. Evite usar esses recursos em novo trabalho de desenvolvimento e planeje modificar os aplicativos que os usam atualmente.

Valor Descrição
0 Nenhum
1 Email
2 Pager
4 net send

@database_name [ = ] N'database_name'

O banco de dados no qual o erro deve ocorrer para que o alerta seja acionado. Se @database_name não for fornecido, o alerta será acionado independentemente de onde o erro ocorreu. @database_name é sysname, com um padrão de NULL. Nomes entre colchetes ([ ]) não são permitidos.

@event_description_keyword [ = ] N'event_description_keyword'

Uma sequência de caracteres que deve ser encontrada na descrição do erro do SQL Server no log de mensagens de erro. @event_description_keyword é nvarchar(100), com um padrão de NULL. Esse parâmetro é útil para filtrar nomes de objetos (por exemplo, customer_table).

Observação

Os caracteres de correspondência de padrões de expressão Transact-SQL LIKE não podem ser usados.

@job_id [ = ] job_id

O número de identificação do trabalho a ser executado em resposta a esse alerta. @job_id é uniqueidentifier, com um padrão de NULL.

Tanto @job_id quanto @job_name devem ser especificados, mas ambos não podem ser especificados.

@job_name [ = ] N'job_name'

O nome do trabalho a ser executado em resposta a esse alerta. @job_name é sysname, com um padrão de NULL.

Tanto @job_id quanto @job_name devem ser especificados, mas ambos não podem ser especificados.

@raise_snmp_trap [ = ] raise_snmp_trap

Não implementado no SQL Server versão 7.0. @raise_snmp_trap é tinyint, com um padrão de 0.

@performance_condition [ = ] N'performance_condition'

Um valor expresso no formato 'ItemComparatorValue'. @performance_condition é nvarchar(512), com um padrão de NULL, e consiste nesses elementos.

Elemento Format Descrição
Item Um objeto de desempenho, contador de desempenho ou instância nomeada do contador.
Comparador Um destes operadores: >, <, ou =.
Valor Valor numérico do contador.

@category_name [ = ] N'category_name'

O nome da categoria do alerta. @category_name é sysname, com um padrão de NULL.

@wmi_namespace [ = ] N'wmi_namespace'

O namespace WMI para consulta de eventos. @wmi_namespace é sysname, com um padrão de NULL. Somente namespaces no servidor local possuem suporte.

@wmi_query [ = ] N'wmi_query'

A consulta que especifica o evento WMI do alerta. @wmi_query é nvarchar(512), com um padrão de NULL.

Valores do código de retorno

0 (sucesso) ou 1 (falha).

Conjunto de resultados

Nenhum.

Comentários

sp_add_alert deve ser executado a partir do msdb banco de dados.

Estas são as circunstâncias em que erros/mensagens gerados por aplicativos SQL Server e SQL Server são enviados para o log de aplicativos do Windows e, portanto, podem gerar alertas:

  • Erros de gravidade 19 ou superior sys.messages
  • Qualquer RAISERROR instrução invocada com WITH LOG sintaxe
  • Qualquer sys.messages erro modificado ou criado usando sp_altermessage
  • Qualquer evento registrado usando xp_logevent

O SQL Server Management Studio fornece um modo gráfico e fácil para gerenciar o sistema de alertas inteiro e é recomendado para configurar uma infraestrutura de alerta.

Se um alerta não estiver funcionando corretamente, verifique se:

  • O serviço SQL Server Agent está em execução

  • O evento apareceu no log do aplicativo do Windows

  • O alerta está ativado

  • Eventos gerados com xp_logevent ocorrem no banco de dados master. Portanto, não dispara um alerta, xp_logevent a menos que o @database_name do alerta seja master ou NULL.

Permissões

Por padrão, somente membros da função de servidor fixa sysadmin podem executar sp_add_alert.

Exemplos

O exemplo a seguir adiciona um alerta (Alerta de Teste) que executa o trabalho Back up the AdventureWorks2022 Database quando é acionado.

Observação

Este exemplo supõe que a mensagem 55001 e o trabalho Back up the AdventureWorks2022 Database já existam. O exemplo é mostrado somente para fins ilustrativos.

USE msdb;
GO

EXEC dbo.sp_add_alert
    @name = N'Test Alert',
    @message_id = 55001,
    @severity = 0,
    @notification_message = N'Error 55001 has occurred. The database will be backed up...',
    @job_name = N'Back up the AdventureWorks2022 Database';
GO