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 0
es , 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 send
o 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 NULL
y 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 conWITH LOG
sintaxis - Cualquier
sys.messages
error modificado o creado mediantesp_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 datosmaster
. Por lo tanto,xp_logevent
no desencadena una alerta a menos que el @database_name de la alerta seamaster
oNULL
.
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