SQL Server的錯誤消息(Error Message)按照消息的嚴(yán)重級別一共劃分25個等級,級別越高,表示嚴(yán)重性也越高。但是如果你統(tǒng)計sys.messages,你會發(fā)現(xiàn),實際上只有16(SQL SERVER 2008/2012)或17個(SQL SERVER 2005)個級別。猜測應(yīng)該是一些留作擴(kuò)展用,一些留作用戶自定義錯誤消息的級別。
sys.messages中有個字段is_event_logged,取值為1時表示出現(xiàn)錯誤時將消息記入事件日志。 對于 message_id 中的所有消息語言,此參數(shù)都是相同的。所以也就是說有些錯誤信息(Error Message)會寫入事件日志,有些就不會寫入錯誤日志。因此監(jiān)控錯誤日志時,我們只能監(jiān)控那些寫入錯誤日志的錯誤信息。一般而言,我們應(yīng)該監(jiān)控嚴(yán)重級別在16~25之間的錯誤信息,另外嚴(yán)重級別14的也應(yīng)該監(jiān)控(主要是Error: 18456, Severity: 14)。
監(jiān)控錯誤日志有很多方式,下面介紹一種非常簡單、有效的監(jiān)控錯誤日志的方法.我們可以通過sp_add_alert創(chuàng)建一個警報(Alerts),如下所示,我們創(chuàng)建一個名稱為SQL Server Severity Event 14的警報(配置前需要配置郵件、PRofileName,Operators,下面腳本也要根據(jù)具體情況調(diào)整)。關(guān)于創(chuàng)建警報的具體信息,可以參考http://msdn.microsoft.com/zh-cn/library/ms189531.aspx
USE [msdb]
GO
IFNOTEXISTS(SELECT 1 FROM msdb.dbo.syscategories WHERE NAME='DBA_MONITORING'AND category_class=2)
BEGIN
EXEC msdb.dbo.sp_add_category
@class=N'ALERT',
@type=N'NONE',
@name=N'DBA_MONITORING' ;
END
GO
IFEXISTS (SELECT name FROM msdb.dbo.sysalerts WHERE name = N'SQL Severity Event 14')
新聞熱點
疑難解答
圖片精選