程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> SqlServer數據庫 >> 關於SqlServer >> SQL Server錯誤日志過濾(ERRORLOG)

SQL Server錯誤日志過濾(ERRORLOG)

編輯:關於SqlServer

一、背景

有一天我發現SQL Server服務器的錯誤日志中包括非常多關於sa用戶的登陸錯誤信息:“Login failed for user 'sa'. 原因: 評估密碼時出錯。[客戶端: XX.XX.XX.XX]”。可是我很久之前就已經禁用了sa用戶,怎麼還會有那麼多的sa用戶登陸信息呢?我猜想是有人在暴力破解我們數據庫的sa用戶的密碼;關於這種攻擊,大家有沒好的解決方案呢?

我查找了一些資料,暫時沒有找到好的解決方案。我只想到一個暫時緩解壓力的辦法,那就是從錯誤信息中統計出登陸sa用戶的客戶端IP地址,再設置防火牆把這些IP過濾掉。

那現在如何解決IP的統計呢?使用SSMS是根本無法進行統計,因為錯誤日志的記錄太多了。SSMS打開錯誤日志的方式如下圖Figure1和Figure2所示;

(Figure1:SQL Server 日志)

(Figure2:sa登陸信息)

經過資料的查找,發現有兩種方式可以對錯誤日志進行過濾:

1. 利用SQL Server系統存儲過程xp_readerrorlog進行過濾;

2. 利用默認跟蹤(Default Trace)進行過濾;

二、xp_readerrorlog實現錯誤日志過濾

(一) 關於錯誤日志的基本操作可以參考:SQL Server錯誤日志收縮(ERRORLOG)。首先了解錯誤日志文件的路徑和大小,可以通過Figure3的方式找到文件,查看大小。

(Figure3:SQL Server ErrorLog文件信息)

除了Figure3直接找到錯誤日志的方式之外,我們還可以通過執行存儲過程EXEC xp_enumerrorlogs返回表的形式進行查看信息,如Figure4所示。xp_enumerrorlogs存儲過程還提供參數,默認值為1(如果沒有提供參數表示傳入的參數為1),2的時候表示查詢SQL Server 代理錯誤日志列表,如Figure13所示。

--Script1:獲取[SQL Server]錯誤日志列表
EXEC xp_enumerrorlogs
EXEC xp_enumerrorlogs 1

(Figure4:SQL Server 錯誤日志列表)

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved