Transact-SQL 参考

sp_add_alert

创建一个警报。

语法

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' ]

参数

[ @name = ] 'name'

警报的名称。此名称出现在为响应警报而发送的电子邮件或呼叫消息中。此名称必须唯一,可以包含百分比字符 (%)。name 的数据类型为 sysname,没有默认设置。

[ @message_id = ] message_id

用于定义警报的消息错误号。(通常与 sysmessages 表中的某个错误号对应。)message_id 的数据类型为 int,默认设置为 0。如果使用 severity 定义警报,则 message_id 必须为 0 或 NULL。

说明  只有写入 Microsoft® Windows NT® 应用程序日志的 sysmessages 错误才能导致发送警报。

[ @severity = ] severity

用于定义警报的严重级别(从 1 到 25)。只要存储于 sysmessages 表中的 Microsoft SQL Server™ 消息以指定严重度发送到 Microsoft Windows NT 应用程序日志中,就会导致发送警报。Severity 的数据类型为 int,默认设置为 0。如果 message_id 用于定义警报,severity 必须为 0

[ @enabled = ] enabled

表明警报的当前状态。enabled 的数据类型为 tinyint,默认设置为 1(启用)。如果为 0,则不启用警报,也不激发。

[ @delay_between_responses = ] delay_between_responses

警报响应之间的等待间隔,以秒为单位。delay_between_responses 的数据类型为 int,默认设置为 0,这意味着响应之间不等待(每次出现警报都生成响应)。响应可同时为下列两种形式,或其中的一种:

[ @notification_message = ] 'notification_message'

作为电子邮件、net send 或呼叫提示的一部分发送给操作员的可选附加消息。notification_message 的数据类型为 nvarchar(512),默认设置为 NULL。指定 notification_message 有助于添加特殊说明,例如补救过程。

[ @include_event_description_in = ] include_event_description_in

表示 SQL Server 错误描述是否应包含在通知消息中。include_event_description_in 的数据类型为 tinyint,默认设置为 5(电子邮件和 net send),并且,它可以使下面的一个或多个值与 OR 逻辑运算符结合使用。

描述
0(默认值)
1 电子邮件
2 呼叫程序
4 net send

[ @database_name = ] 'database'

必须在其中出现错误才能激发警报的数据库。如果没提供database,则无论何处发生错误,警报都要启动。database 的数据类型为 sysname,默认设置为 NULL。

[ @event_description_keyword = ] 'event_description_keyword_pattern'

字符序列,对 SQL Server 错误的描述必须与此类似。可使用 Transact-SQL LIKE 表达式模式匹配字符。event_description_keyword_pattern 的数据类型为 nvarchar(100),默认设置为 NULL。该参数在筛选对象名称(例如,%customer_table%)时很有用。

[ @job_id = ] job_id

响应该警报运行的作业的作业标识号。job_id 的数据类型为 uniqueidentifier,默认设置为 NULL。

[ @job_name = ] 'job_name'

响应该警报所执行的作业名称。job_name 的数据类型为 sysname,默认设置为 NULL。

说明  必须指定 job_idjob_name,但不能两个都指定。

[ @raise_snmp_trap = ] raise_snmp_trap

SQL Server 7.0 版中没有实现。

[ @performance_condition = ] 'performance_condition'

以格式 'item comparator value' 表达的一个值。performance_condition 的数据类型为 nvarchar(512),默认设置为 NULL,由下列元素组成。

格式元素 描述
Item 性能对象,性能计数器或计数器的命名实例
Comparator 下列运算符之一:>、< 或 =
Value 计数器的数值

说明  性能条件警报只供最前面的 99 个数据库使用。接在最前面的 99 个数据库之后创建的任何数据库都不会包括在 sysperfinfo 系统表中,并且,使用 sp_add_alert 过程会返回一个错误。

[ @category_name = ] 'category'

警报分类的名称。category 的数据类型为 sysname,默认设置为 NULL。

返回代码值

0(成功)或 1(失败)

结果集

注释

sp_add_alert 必须从 msdb 数据库运行。

在下列情况下,SQL Server 和 SQL Server 应用程序产生的错误/消息被发送到 Windows NT 应用程序日志,因此能产生警报:

  1. 严重度 19 或更高的 sysmessages 错误

  2. 任何使用 WITH LOG 语法唤醒调用的 RAISERROR 语句

  3. 所有用 sp_altermessage 修改或产生的 sysmessages 错误

  4. 所有用 xp_logevent 记录的日志事件

SQL Server 企业管理器提供了一种易用的图形界面来管理整个警报系统,这也是配置基本结构的推荐方式。

如果一个警报没有正常工作,请检查:

权限

只有 sysadmin 固定服务器角色的成员才能执行 sp_add_alert

示例

下面的示例添加一个警报(测试警报),该警报在启动时唤醒调用备份客户数据库作业。

说明  此示例假设消息 55001 和备份用户数据库作业已经存在。示例只是出于说明性目的而显示。

USE msdb
EXEC sp_add_alert @name = 'Test Alert', @message_id = 55001, 
   @severity = 0, 
   @notification_message = 'Error 55001 has occurred. The database will 
   be backed up...', 
   @job_name = 'Back up the Customer Database'

请参见

sp_add_notification

sp_addtask

sp_altermessage

sp_delete_alert

sp_help_alert

sp_update_alert

sysperfinfo

系统存储过程