bcp命令把登入資訊記錄記錄檔
1、如果原來資料庫已經存在觸發器把他刪掉
| 代碼如下 |
複製代碼 |
1 USE MASTER 2 GO 3 DROP TRIGGER trg_logon_attempttest ON ALL SERVER 4 GO2 |
、在D盤建立一個文字檔 d:Logondata.txt 這個文字檔用來記錄登入資訊
3、建立一個登入觸發器審核登入事件
| 代碼如下 |
複製代碼 |
CREATE TRIGGER trg_logon_attempttest ON ALL SERVER WITH EXECUTE AS'sa' FOR LOGON,ALTER_LOGIN AS BEGIN DECLARE @cmd nvarchar(4000) ; SELECT @cmd = 'ECHO ' + ORIGINAL_LOGIN()+ CHAR(9) + CONVERT(varchar(100), GETDATE(), 121) + ' >> d:Logondata.txt' ; DECLARE @tb_re TABLE(re varchar(4000)); INSERT @tb_re exec master.. xp_cmdshell @cmd END GO |
這樣當每次登入SQLSERVER的時候就會記錄登入時間和登入使用者名稱
在建立觸發器前,需要開啟xp_cmdshell擴充預存程序,並且不要禁用sa使用者
不然會遇到下面這種情況,登入不了伺服器,我的電腦名稱是joe
分享到
如果遇到這種情況可以使用SQLSERVER的專用管理員連接(DAC)串連進伺服器,並把觸發器先刪除掉
日誌的樣式是這樣的:
| 代碼如下 |
複製代碼 |
1 NT AUTHORITYSYSTEM 2013-02-08 16:49:04.140 2 NT AUTHORITYSYSTEM 2013-02-08 16:49:14.210 3 NT AUTHORITYSYSTEM 2013-02-08 16:49:24.277 4 JOEAdministrator 2013-02-08 16:49:31.753 5 JOEAdministrator 2013-02-08 16:49:31.963 6 NT AUTHORITYSYSTEM 2013-02-08 16:49:34.327 7 JOEAdministrator 2013-02-08 16:49:35.777 8 sa 2013-02-08 16:51:39.930 9 NT AUTHORITYSYSTEM 2013-02-08 16:52:03.147 10 NT AUTHORITYSYSTEM 2013-02-08 16:52:13.337 11 NT AUTHORITYSYSTEM 2013-02-08 16:52:23.410 12 NT AUTHORITYSYSTEM 2013-02-08 16:52:33.830 13 NT AUTHORITYSYSTEM 2013-02-08 16:52:44.703 14 NT AUTHORITYSYSTEM 2013-02-08 16:52:54.407 15 NT AUTHORITYSYSTEM 2013-02-08 16:52:54.623 16 NT AUTHORITYSYSTEM 2013-02-08 16:52:54.797 17 NT AUTHORITYSYSTEM 2013-02-08 16:52:54.823 18 NT AUTHORITYSYSTEM 2013-02-08 16:52:54.893 19 NT AUTHORITYSYSTEM 2013-02-08 16:52:55.147 20 NT AUTHORITYSYSTEM 2013-02-08 16:52:55.277
|
--------------------------------------------------------------------------------
現在還有兩個問題沒有解決:
(1)我只想記錄非Windows驗證方式的使用者登入,不想記錄Windows驗證方式的 ,現在還沒有找到方法
(2)修改登入使用者密碼的動作要記錄,但是找了很久也沒有找到使用什麼函數