sp_add_alert (Transact-SQL)

Sintaxis

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

Argumentos

  • [ @name = ] 'name'
    Nombre de la alerta. El nombre aparece en el mensaje de correo electrónico o de localizador enviado como respuesta a la alerta. Debe ser único y puede incluir el carácter de porcentaje (%). name es de tipo sysname y no tiene ningún valor predeterminado.

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

    [!NOTA]

    Sólo los errores sysmessages escritos en el registro de aplicación de Microsoft Windows pueden provocar que se envíe una alerta.

  • [ @severity = ] severity
    Nivel de gravedad (de 1 a 25) que define la alerta. Cualquier mensaje de SQL Server almacenado en la tabla sysmessages enviada al registro de aplicación de Microsoft Windows con la gravedad indicada produce el envío de la alerta. severity es de tipo int y su valor predeterminado es 0. Si se usa message_id para definir la alerta, severity debe ser 0.

  • [ @enabled = ] enabled
    Indica el estado actual de la alerta. enabled es de tipo tinyint y su valor predeterminado es 1 (habilitado). Si se establece en 0, la alerta no está habilitada y no se activa.

  • [ @delay_between_responses = ] delay_between_responses
    Intervalo de espera en segundos, entre respuestas a la alerta. delay_between_responseses de tipo int y su valor predeterminado es 0, lo que significa que no existe intervalo de espera entre respuestas (cada vez que se produce la alerta, se genera una respuesta). La respuesta puede tener lugar de cualquiera de estas formas, o de ambas:

    • Una o más notificaciones enviadas por correo electrónico o el localizador

    • Un trabajo que debe ejecutarse

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

  • [ @notification_message = ] 'notification_message'
    Es un mensaje adicional opcional que se envía al operador como parte de la notificación por correo electrónico, net send o localizador. notification_message es de tipo nvarchar(512) y su valor predeterminado es NULL. La especificación de notification_message es útil para agregar notas especiales como, por ejemplo, procedimientos para la resolución de un problema.

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

    Nota importanteImportante

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

    Valor

    Descripción

    0 (predeterminado)

    Ninguna

    1

    Correo electrónico

    2

    Localizador

    4

    net send

  • [ @database_name = ] 'database'
    Base de datos en la que debe ocurrir el error para que se active la alerta. Si no se suministra database, la alerta se activa independientemente de dónde se haya producido el error. database es de tipo sysname. No se permiten nombres incluidos entre corchetes ([ ]). El valor predeterminado es NULL.

  • [ @event_description_keyword = ] 'event_description_keyword_pattern'
    Secuencia de caracteres a la que debe parecerse la descripción del error de SQL Server. Se pueden usar caracteres de coincidencia de patrón de la expresión LIKE de Transact-SQL. event_description_keyword_pattern es de tipo nvarchar(100) y su valor predeterminado es NULL. Este parámetro resulta útil para filtrar nombres de objeto (por ejemplo, %customer_table%).

  • [ @job_id = ] job_id
    Es el número de identificación del trabajo que se debe ejecutar como respuesta a esta alerta. job_id es de tipo uniqueidentifier y su valor predeterminado es NULL.

  • [ @job_name = ] 'job_name'
    El nombre del trabajo que debe ejecutarse como respuesta a esta alerta. job_namees de tipo sysname y su valor predeterminado es NULL.

    [!NOTA]

    Se debe especificar job_id o job_name, pero no ambos.

  • [ @raise_snmp_trap = ] raise_snmp_trap
    No se ha implementado en SQL Server versión 7.0. raise_snmp_trap es de tipo tinyint y su valor predeterminado es 0.

  • [ @performance_condition = ] 'performance_condition'
    Es un valor expresado en formato 'itemcomparatorvalue'. performance_condition es de tipo nvarchar(512), su valor predeterminado es NULL y consta de estos elementos.

    Elemento de formato

    Descripción

    Item

    Objeto de rendimiento, contador de rendimiento o instancia con nombre del contador

    Comparator

    Uno de estos operadores: >, < o =.

    Value

    Valor numérico del contador

  • [ @category_name = ] 'category'
    Es el nombre de la categoría de alerta. category es de tipo sysname y su valor predeterminado es NULL.

  • [ @wmi_namespace= ] 'wmi_namespace'
    Es el espacio de nombres WMI para consultar eventos. wmi_namespace es de tipo sysname y su valor predeterminado es NULL. Sólo se admiten espacios de nombres del servidor local.

  • [ @wmi_query= ] 'wmi_query'
    La consulta que especifica el evento WMI para la alerta. wmi_query es de tipo nvarchar(512) y su valor predeterminado es NULL.

Valores de código de retorno

0 (correcto) o 1 (error)

Conjuntos de resultados

Ninguno

Notas

sp_add_alert se debe ejecutar desde la base de datos msdb.

Éstas son las circunstancias en las que los errores y mensajes que generan SQL Server y las aplicaciones de SQL Server se envían al registro de aplicación de Windows y que, por lo tanto, pueden generar alertas:

  • Errores sysmessages de gravedad 19 o superior

  • Cualquier instrucción RAISERROR llamada con la sintaxis WITH LOG

  • Errores sysmessages modificados o creados mediante sp_altermessage

  • Eventos registrados mediante xp_logevent

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

Si una alerta no funciona correctamente, compruebe lo siguiente:

  • El servicio Agente SQL Server se está ejecutando.

  • El evento ha aparecido en el registro de aplicación de Windows.

  • La alerta está habilitada.

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

Permisos

De forma predeterminada, sólo los miembros de la función fija 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 AdventureWorks Database al activarse.

[!NOTA]

En el ejemplo se da por supuesto que el mensaje 55001 y el trabajo Back up the AdventureWorks Database ya existen. El siguiente es sólo 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 AdventureWorks Database' ;
GO