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'
    警示的名稱。這個名稱會出現在回應警示所傳送的電子郵件或呼叫器訊息中。它必須是唯一的,且可以包含百分比 (%) 字元。namesysname,沒有預設值。
  • [ @message_id = ] message_id
    定義警示的訊息錯誤號碼。(它通常對應於 sysmessages 資料表中的錯誤號碼。) message_idint,預設值是 0。如果利用 severity 來定義警示,message_id 必須是 0 或 NULL。

    ms189531.note(zh-tw,SQL.90).gif附註:
    只有寫入 Microsoft Windows 應用程式記錄檔的 sysmessages 錯誤能夠傳送警示。
  • [ @severity = ] severity
    定義警示的嚴重性層級 (125)。儲存在傳送到 Microsoft Windows 應用程式記錄檔的 sysmessages 資料表中,且含有指示嚴重性的任何 Microsoft SQL Server 訊息,都會傳送警示。severityint,預設值是 0。如果利用 message_id 來定義警示,severity 必須是 0
  • [ @enabled = ] enabled
    指出警示目前的狀態。enabledtinyint,預設值是 1 (已啟用)。如果是 0,就表示不啟用,也不引發警示。
  • [ @delay_between_responses = ] delay_between_responses
    這個警示各次回應之間的等待期間 (以秒為單位)。delay_between_responsesint,預設值是 0,表示在回應之間不等待 (每次出現警示,都產生回應)。回應可以採用下列兩種形式,或其中之一:

    • 利用電子郵件或呼叫器來傳送的一或多項通知。
    • 要執行的作業。

    在設定這個值之後,便有可能防止在一小段時間內重複出現警示,因而傳送不想要的電子郵件訊息之類的情況。

  • [ @notification_message = ] 'notification_message'
    這是選擇性的附加訊息,附加在電子郵件、net send 或呼叫器通知之中,傳給操作員。notification_messagenvarchar(512),預設值是 NULL。在加入矯正程序之類的特殊附註時,指定 notification_message 很有用。
  • [ @include_event_description_in = ] include_event_description_in
    這是指通知訊息是否應該包括 SQL Server 錯誤的描述。include_event_description_intinyint,預設值是 5 (電子郵件和 net send),可以利用 OR 邏輯運算子,將一或多個這些值組合起來。

    描述

    0 (預設值)

    1

    電子郵件

    2

    呼叫器

    4

    net send

  • [ @database_name =] 'database'
    會因發生錯誤而引發警示的資料庫。如果未提供 database,不論是在哪裡發生錯誤,都會引發警示。databasesysname,預設值是 NULL。
  • [ @event_description_keyword = ] 'event_description_keyword_pattern'
    SQL Server 錯誤的描述必須符合的字元序列。您可以使用 Transact-SQL LIKE 運算式模式比對字元。event_description_keyword_patternnvarchar(100),預設值是 NULL。在篩選物件名稱時,這個參數很有用 (如 %customer_table%)。
  • [ @job_id = ] job_id
    當回應這個警示時,所執行之作業的作業識別碼。job_iduniqueidentifier,預設值是 NULL。
  • [ @job_name = ] 'job_name'
    當回應這個警示時,所執行的作業名稱。job_namesysname,預設值是 NULL。

    ms189531.note(zh-tw,SQL.90).gif附註:
    您必須指定 job_idjob_name,但不能同時指定這兩者。
  • [ @raise_snmp_trap = ] raise_snmp_trap
    Microsoft SQL Server 7.0 沒有這項實作。raise_snmp_traptinyint,預設值是 0。
  • [ @performance_condition = ] 'performance_condition'
    這是用 'itemcomparatorvalue'格式來表示的值。performance_conditionnvarchar(512),預設值是 NULL,由這些元素組成。

    格式元素 描述

    Item

    計數器的效能物件、效能計數器或具名執行個體

    Comparator

    它是下列運算子之一:>、< 或 =

    Value

    計數器的數值

  • [ @category_name = ] 'category'
    類別目錄的名稱。categorysysname,預設值是 NULL。
  • [ @wmi_namespace= ] 'wmi_namespace'
    要查詢事件的 WMI 命名空間。wmi_namespacesysname,預設值是 NULL。只支援本機伺服器的命名空間。
  • [ @wmi_query= ] 'wmi_query'
    指定警示之 WMI 事件的查詢。wmi_querynvarchar(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)。

ms189531.note(zh-tw,SQL.90).gif附註:
這個範例假設訊息 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)

說明及資訊

取得 SQL Server 2005 協助