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'nome'
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 send
ou 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 |
|
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 comWITH LOG
sintaxe - Qualquer
sys.messages
erro modificado ou criado usandosp_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 dadosmaster
. Portanto, não dispara um alerta,xp_logevent
a menos que o @database_name do alerta sejamaster
ouNULL
.
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