星期五, 6月 07, 2013

[SQL] 警示應用 - 錯誤嚴重性

SQL Server 定義 26 個嚴重性層級,從 0 - 25,
  1. 17、18 為警告
  2. 19 以上為非常嚴重
  3. 20 以上會導致資料庫連接關閉,且所有 Transaction 皆會 Rollback
  4. 17 以上的錯誤訊息會寫入 SQL Server 錯誤記錄檔和 Windows 應用程式事件記錄檔中
在 SQL Server 2000 警示內,預設會建立錯誤嚴重性 19 - 25 的未啟用警示,在 SQL Server 2005 開始則不會有,建議建立此警示

嚴重性簡易說明
0 - 9資訊類訊息,不算錯誤
10 資訊類訊息以傳回狀態,或回報不嚴重的錯誤
11 - 16 使用者造成的錯誤
17 - 19 使用者無法修正的軟體錯誤
20目前的處理發生嚴重錯誤
21資料庫處理序發生嚴重錯誤
22 - 23嚴重錯誤:資料表完整性受到質疑
24嚴重錯誤:硬體錯誤
25嚴重錯誤


SSMS => 物件總管 => SQL Server Agent => 警示 => 新增警示

[SQL] 警示應用 - 錯誤嚴重性-1

新增警示 => 一般 => 輸入名稱(嚴重性 19)、選擇類型(SQL Server 事件警示)、選擇嚴重性

[SQL] 警示應用 - 錯誤嚴重性-2

新增警示 =>回應 => 通知操作員,並勾選該操作員要用電子郵件通知

[SQL] 警示應用 - 錯誤嚴重性-3

新增警示 => 選項 => 勾選電子郵件讓錯誤訊息文字也會包含進 EMail 中

[SQL] 警示應用 - 錯誤嚴重性-4

以此類推來完成其他嚴重性警示

[SQL] 警示應用 - 錯誤嚴重性-7

警示建立完成後,利用 RAISERROR 來觸發嚴重性 19 的錯誤

-- 建立使用者自訂的錯誤號碼並設定嚴重性為 19
sp_addmessage
  @msgnum = 50001 ,
  @severity = 19 ,
  @msgtext = 'Demo is triggered' ,
  @Lang = 'english' ,
  @with_Log = true
GO

-- 觸發該錯誤
RAISERROR (50001,19,1) WITH LOG
GO
[SQL] 警示應用 - 錯誤嚴重性-5

收到嚴重性 19 的通知 mail

[SQL] 警示應用 - 錯誤嚴重性-6

1 則留言: