创建一个警报。
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_id 或 job_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 应用程序日志,因此能产生警报:
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'