Partilhar via


sp_add_alert (Transact-SQL)

Aplica-se a:SQL Server

Cria um alerta.

Transact-SQL convenções de sintaxe

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 aparece na mensagem de e-mail ou 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 deve 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é 25aqui) que define o alerta. @severity é int, com um padrão de 0. Qualquer mensagem do sysmessages SQL Server armazenada 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 [ = ] ativado

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

@delay_between_responses [ = ] delay_between_responses

O período de espera, em segundos, entre as 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 ser de uma destas formas 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 evitar, por exemplo, que mensagens de e-mail 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 e-mail, 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 é minúsculo, 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 novos trabalhos de desenvolvimento e planeje modificar aplicativos que atualmente usam esses recursos.

Valor Descrição
0 Nenhum
1 Correio eletrónico
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. Este parâmetro é útil para filtrar nomes de objetos (por exemplo, customer_table).

Observação

LIKETransact-SQL caracteres de correspondência de padrões de expressão 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 é identificador exclusivo, com um padrão de NULL.

Tanto @job_id como @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 como @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 é minúsculo, 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 de alerta. @category_name é sysname, com um padrão de NULL.

@wmi_namespace [ = ] N'wmi_namespace'

O namespace WMI para consultar eventos. @wmi_namespace é sysname, com um padrão de NULL. Somente namespaces no servidor local são suportados.

@wmi_query [ = ] N'wmi_query'

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

Valores de código de retorno

0 (sucesso) ou 1 (fracasso).

Conjunto de resultados

Nenhum.

Observações

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

Estas são as circunstâncias em que erros/mensagens geradas 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 uma maneira gráfica fácil de gerenciar todo o sistema de alertas e é a maneira recomendada de 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 de aplicativos do Windows

  • O alerta está ativado

  • Os eventos gerados com xp_logevent ocorrem no banco de dados master. Portanto, não aciona um alerta, xp_logevent a menos que o @database_name para o 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

Exemplo 1 - Adicionar um alerta para um trabalho

O exemplo a seguir adiciona um alerta (Test Alert) que executa o Back up the AdventureWorks2022 Database trabalho quando acionado.

Observação

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

USE msdb;
GO

EXECUTE 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

Exemplo 2 - Adicionar um alerta para um limite de replicação

O exemplo a seguir adiciona um alerta para informar quando uma transação de replicação excedeu o limite de latência:

EXECUTE msdb.dbo.sp_add_alert
    @name = N'Replication Warning: Transactional replication latency (Threshold: latency)',
    @message_id = 14161,
    @severity = 0,
    @enabled = 1,
    @delay_between_responses = 30,
    @include_event_description_in = 5,
    @category_name = N'Replication',
    @job_id = N'00000000-0000-0000-0000-000000000000';
GO