sp_add_alert (Transact-SQL)
建立警示。
語法
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' ]
引數
- [ @name = ] 'name'
警示的名稱。這個名稱會出現在回應警示所傳送的電子郵件或呼叫器訊息中。它必須是唯一的,且可以包含百分比 (%) 字元。name 是 sysname,沒有預設值。
[ @message_id = ] message_id
定義警示的訊息錯誤號碼。(它通常對應於 sysmessages 資料表中的錯誤號碼。) message_id 是 int,預設值是 0。如果利用 severity 來定義警示,message_id 必須是 0 或 NULL。附註: 只有寫入 Microsoft Windows 應用程式記錄檔的 sysmessages 錯誤能夠傳送警示。
- [ @severity = ] severity
定義警示的嚴重性層級 (1 至 25)。儲存在傳送到 Microsoft Windows 應用程式記錄檔的 sysmessages 資料表中,且含有指示嚴重性的任何 Microsoft SQL Server 訊息,都會傳送警示。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
Microsoft SQL Server 7.0 沒有這項實作。raise_snmp_trap 是 tinyint,預設值是 0。
[ @performance_condition = ] 'performance_condition'
這是用 'itemcomparatorvalue'格式來表示的值。performance_condition 是 nvarchar(512),預設值是 NULL,由這些元素組成。格式元素 描述 Item
計數器的效能物件、效能計數器或具名執行個體
Comparator
它是下列運算子之一:>、< 或 =
Value
計數器的數值
- [ @category_name = ] 'category'
類別目錄的名稱。category 是 sysname,預設值是 NULL。
- [ @wmi_namespace= ] 'wmi_namespace'
要查詢事件的 WMI 命名空間。wmi_namespace 是 sysname,預設值是 NULL。只支援本機伺服器的命名空間。
- [ @wmi_query= ] 'wmi_query'
指定警示之 WMI 事件的查詢。wmi_query 是 nvarchar(512),預設值是 NULL。
傳回碼值
0 (成功) 或 1 (失敗)
結果集
無
備註
sp_add_alert 必須從 msdb 資料庫中執行。
這些都是將 SQL Server 和 SQL Server 應用程式產生的錯誤/訊息傳給 Windows 應用程式記錄檔的情況,因此,可能會產生警示:
- 嚴重性 19 或更高的 sysmessages 錯誤
- 利用 WITH LOG 語法來叫用的任何 RAISERROR 陳述式
- 利用 sp_altermessage 來修改或建立的任何 sysmessages 錯誤
- 利用 xp_logevent 來記錄的任何事件
SQL Server Management Studio 提供了一種簡單的圖形方式供您管理整個警示系統,建議您利用這個方式來設定警示基礎結構。
如果警示無法正常作,請檢查情況是否如下:
- SQL Server Agent 服務在執行中。
- 事件出現在 Windows 應用程式記錄檔中。
- 已啟用警示。
- xp_logevent 產生的事件出現在 master 資料庫中。因此,除非警示的 @database_name 是 'master' 或 NULL,否則,xp_logevent 不會觸發警示。
權限
依預設,只有系統管理員 (sysadmin) 固定伺服器角色的成員,才能夠執行 sp_add_alert。
範例
下列範例會在引發時加入執行 Back up the AdventureWorks Database
作業的警示 (Test Alert)。
附註: |
---|
這個範例假設訊息 55001 和 Back up the AdventureWorks Database 作業已經存在。這個範例只供說明。 |
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
請參閱
參考
sp_add_notification (Transact-SQL)
sp_altermessage (Transact-SQL)
sp_delete_alert (Transact-SQL)
sp_help_alert (Transact-SQL)
sp_update_alert (Transact-SQL)
sys.sysperfinfo (Transact-SQL)
系統預存程序 (Transact-SQL)