Comparteix a través de


sp_add_alert (Transact-SQL)

Se aplica a: SQL Server

Crea una alerta.

Convenciones de sintaxis de Transact-SQL

Sintaxis

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'

Nombre de la alerta. El nombre aparece en el mensaje de correo electrónico o de buscapersonas enviado como respuesta a la alerta. Debe ser único y puede contener el carácter de porcentaje (%). @name es sysname, sin ningún valor predeterminado.

[ @message_id = ] message_id

Número de error del mensaje que define la alerta. (Normalmente corresponde a un número de error de la sysmessages tabla). @message_id es int, con un valor predeterminado de 0. Si se usa @severity para definir la alerta, @message_id debe ser 0 o NULL.

Solo sysmessages los errores escritos en el registro de aplicaciones de Microsoft Windows pueden provocar que se envíe una alerta.

[ @severity = ] gravedad

Nivel de gravedad (desde 1 hasta 25) que define la alerta. @severity es int, con un valor predeterminado de 0. Cualquier mensaje de SQL Server almacenado en la sysmessages tabla enviada al registro de aplicaciones de Windows con la gravedad indicada hace que se envíe la alerta. Si se usa @message_id para definir la alerta, @severity debe ser 0.

[ @enabled = ] enabled

Indica el estado actual de la alerta. @enabled es tinyint, con un valor predeterminado de 1 (habilitado). Si 0es , la alerta no está habilitada y no se activa.

[ @delay_between_responses = ] delay_between_responses

El intervalo de espera, en segundos, entre respuestas a la alerta. @delay_between_responses es int, con un valor predeterminado de 0, lo que significa que no hay ninguna espera entre respuestas (cada aparición de la alerta genera una respuesta). La respuesta puede tener lugar de cualquiera de estas formas, o de ambas:

  • Una o varias notificaciones enviadas a través de correo electrónico o buscapersonas
  • Un trabajo que se va a ejecutar

Al establecer este valor, es posible evitar que, por ejemplo, se envíen mensajes de correo electrónico no deseados cuando se produzca una alerta repetidamente en un breve período de tiempo.

[ @notification_message = ] N'notification_message'

Un mensaje adicional opcional enviado al operador como parte de la notificación de buscapersonas, net sendo correo electrónico. @notification_message es nvarchar(512), con un valor predeterminado de NULL. Especificar @notification_message es útil para agregar notas especiales, como procedimientos de corrección.

[ @include_event_description_in = ] include_event_description_in

Si la descripción del error de SQL Server debe incluirse como parte del mensaje de notificación. @include_event_description_in es tinyint, con un valor predeterminado de 5 (correo electrónico y net send), y puede tener uno o varios de estos valores combinados con un OR operador lógico.

Importante

El buscapersonas y net send las opciones se quitarán de Agente SQL Server en una versión futura de SQL Server. Evite utilizar estas características en los nuevos trabajos de programación y planee modificar las aplicaciones que actualmente las utilizan.

Valor Descripción
0 None
1 Correo electrónico
2 Buscapersonas
4 net send

[ @database_name = ] N'database_name'

Base de datos en la que debe ocurrir el error para que se active la alerta. Si no se proporciona @database_name , la alerta se desencadena independientemente de dónde se haya producido el error. @database_name es sysname, con un valor predeterminado de NULL. No se permiten nombres entre corchetes ([ ]).

[ @event_description_keyword = ] N'event_description_keyword'

Secuencia de caracteres que se deben encontrar en la descripción del error de SQL Server en el registro de mensajes de error. @event_description_keyword es nvarchar(100), con un valor predeterminado de NULL. Este parámetro es útil para filtrar nombres de objeto (por ejemplo, customer_table).

Nota:

No se pueden usar caracteres de coincidencia de patrones de expresión de Transact-SQL LIKE .

[ @job_id = ] job_id

El número de identificación del trabajo que se ejecutará en respuesta a esta alerta. @job_id es uniqueidentifier, con un valor predeterminado de NULL.

Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

[ @job_name = ] N'job_name'

El nombre del trabajo que se ejecutará en respuesta a esta alerta. @job_name es sysname, con un valor predeterminado de NULL.

Se deben especificar @job_id o @job_name , pero no se pueden especificar ambos.

[ @raise_snmp_trap = ] raise_snmp_trap

No se implementa en la versión 7.0 de SQL Server. @raise_snmp_trap es tinyint, con un valor predeterminado de 0.

[ @performance_condition = ] N'performance_condition'

Valor expresado en el formato "ItemComparatorValue". @performance_condition es nvarchar(512), con un valor predeterminado de NULLy consta de estos elementos.

Elemento de formato Descripción
Elemento Objeto de rendimiento, contador de rendimiento o instancia con nombre del contador.
Comparador Uno de estos operadores: >, <o =.
Valor Valor numérico del contador.

[ @category_name = ] N'category_name'

El nombre de la categoría de alerta. @category_name es sysname, con un valor predeterminado de NULL.

[ @wmi_namespace = ] N'wmi_namespace'

Es el espacio de nombres WMI para consultar eventos. @wmi_namespace es sysname, con un valor predeterminado de NULL. Solo se admiten espacios de nombres del servidor local.

[ @wmi_query = ] N'wmi_query'

La consulta que especifica el evento WMI para la alerta. @wmi_query es nvarchar(512), con un valor predeterminado de NULL.

Valores de código de retorno

0 (correcto) o 1 (erróneo).

Conjunto de resultados

Ninguno.

Comentarios

sp_add_alert debe ejecutarse desde la msdb base de datos.

Estas son las circunstancias en las que los errores o mensajes generados por SQL Server y las aplicaciones de SQL Server se envían al registro de aplicaciones de Windows y, por lo tanto, pueden generar alertas:

  • Errores de gravedad 19 o posteriores sys.messages
  • Cualquier RAISERROR instrucción invocada con WITH LOG sintaxis
  • Cualquier sys.messages error modificado o creado mediante sp_altermessage
  • Cualquier evento registrado mediante xp_logevent

SQL Server Management Studio proporciona una forma gráfica y fácil de administrar todo el sistema de alertas, y es el método recomendado para configurar una infraestructura de alertas.

Si una alerta no funciona correctamente, compruebe si:

  • El servicio Agente SQL Server se está ejecutando

  • El evento apareció en el registro de aplicaciones de Windows.

  • La alerta está habilitada

  • Los eventos generados durante xp_logevent se producen en la base de datos master. Por lo tanto, xp_logevent no desencadena una alerta a menos que el @database_name de la alerta sea master o NULL.

Permisos

De forma predeterminada, solo los miembros del rol fijo de servidor sysadmin pueden ejecutar sp_add_alert.

Ejemplos

El ejemplo siguiente muestra cómo agregar una alerta (Test Alert) que ejecute el trabajo Back up the AdventureWorks2022 Database al activarse.

Nota:

En el ejemplo se da por supuesto que el mensaje 55001 y el trabajo Back up the AdventureWorks2022 Database ya existen. El siguiente es solo un ejemplo.

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