--17:01 2014-06-09 EERORLOG中出現這種信息
2014-05-20 17:49:44.070 登錄 Login failed for user 'UserA'. Reason: The password of the account has expired.
查看賬戶有設強制密碼過期。聯系使用人員,說明情況,把強制密碼過期選項去掉,沒再看到此賬戶登錄錯誤信息。
過了十來天,使用人員說UserA再次登錄登錄不上,讓重置密碼。重置后,自己用新密碼是可以連接。第二天上班,查看ERRORLOG發現

2014-05-29 11:00:40.220 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-05-29 10:57:50.220 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-05-29 10:55:32.390 登錄 Login failed for user 'UserA' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-05-29 10:55:00.220 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-05-29 10:54:08.440 登錄 Login failed for user 'UserA' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-05-29 10:53:29.250 登錄 Login failed for user 'UserA' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-05-29 10:52:42.550 登錄 Login failed for user 'UserA' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-05-29 10:52:10.210 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-05-29 10:49:20.220 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-05-29 10:46:30.220 登錄 Login failed for user 'UserA'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**]
此時,我這邊還可以登錄,讓他那邊手動連接,得到下面的錯誤
查看賬戶登錄屬性->狀態->SQL Server身份驗證,登錄已鎖定 已勾選。點擊想取消已鎖定,報錯,大致意思是要改密碼之類的,忘記截圖。。。
返回常規,重置密碼,就能正常登錄了。22:28 2014-08-07最近整理用戶登錄測試,遇到類似現象,補充截圖:
意思和之前處理一樣,解鎖時修改密碼就好,可以用語句實現:
ALTER LOGIN Loginame WITH PASSWORD='Pwd' UNLOCK
最近在ERRORLOG下面又看到類似信息

2014-06-07 14:16:08.560 登錄 Login failed for user 'sa'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-06-07 14:16:08.460 登錄 Login failed for user 'sa'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-06-07 14:16:08.270 登錄 Login failed for user 'sa'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**] 2014-06-07 14:14:12.390 登錄 Login failed for user 'sa' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-06-07 14:14:12.330 登錄 Login failed for user 'sa' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**] 2014-06-07 14:14:12.190 登錄 Login failed for user 'sa' because the account is currently locked out. The system administrator can unlock it. [客戶端: **.**.**.**]
網上找到相關資料,密碼錯誤次數達到某個限制,賬戶將locked down
我再輸入一個錯誤密碼,ERRORLOG中得到如下信息
2014-06-09 11:36:30.500 登錄 Login failed for user 'sa'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: <local machine>] 2014-06-09 11:36:30.500 登錄 錯誤: 18456,嚴重性: 14,狀態: 8。
疑問1:account is currently locked out.按字面理解,賬戶被鎖定,應該就登錄不了(不管密碼正確與否)。如果沒Alter login ** with password='' unlock,這個賬戶是不是一直被鎖定?
-->A是的
-->Q那我再次登錄的時候,用一個錯誤密碼,它提示Login failed for user **. 原因: 密碼與所提供的登錄名不匹配。不應該提示 賬戶鎖定么?
-->A至於是先匹配密碼 再check Login是否有Lock,不是很清楚
-->Q我感覺是既然已經鎖定了,輸入錯誤的密碼,就不應該再去判斷密碼了。但我在ERRORLOG下看到的是,這兩條信息交替產生。
--17:01 2014-07-29 補充
帳戶被鎖定后,用錯誤的密碼登錄,提示密碼不匹配;用正確的密碼登錄,提示帳戶被鎖定。因此,是先匹配密碼,再檢查帳戶是否被鎖定。用戶帳戶被鎖定的登錄嘗試失敗的次數由 本地計算機策略->帳戶鎖定策略->帳戶鎖定閥值 確定;帳戶被鎖定,如果不人為解鎖,那么它一直保持鎖定,直到達到帳戶鎖定時間(確定鎖定帳戶在自動解鎖之前保持鎖定的分鍾數)。
疑問2:如何知道哪個用戶是鎖定的狀態?
1 SELECT LOGINPROPERTY('Tear','IsLocked'),LOGINPROPERTY('Tear','IsExpired'),LOGINPROPERTY('Tear','BadPasswordCount') 2 ,LOGINPROPERTY('Tear','BadPasswordTime'),LOGINPROPERTY('Tear','LockoutTime'),LOGINPROPERTY('Tear','PasswordLastSetTime')
感覺有些屬性返回結果和預期的不一致,可能是自己理解錯了。比如UserA有多次密碼錯誤,但BadPasswordCount卻為零,BadPasswordTime是以前的某個時間;而另一用戶,使用錯誤密碼登錄,BadPasswordCount為1,BadPasswordTime為當時時間。找個時間再去查查LOGINPROPERTY的解釋。
--22:26 2014-7-30 重置連接數
對實例->屬性->連接->最大並發連接數不是特別理解,昨天下午心血來潮,把連接數改成1,不斷開啟新的查詢窗口,並沒有按預想的出錯(當時沒有重啟數據庫服務)。今天早上打開電腦,打開對象資源管理器,連接到服務器時報錯。
查看ERRORLOG,錯誤信息很明顯,超過最大並發連接數。
2014-07-30 09:35:37.12 登錄 錯誤: 17809,嚴重性: 20,狀態: 3。 2014-07-30 09:35:37.12 登錄 Could not connect because the maximum number of '1' user connections has already been reached. The system administrator can use sp_configure to increase the maximum value. The connection has been closed. [客戶端: 127.0.0.1]
第一反應,使用DAC連接,將user connections改大點。參照之前默認實例下先用單用戶模式啟動數據庫,但是啟動的時候就出錯。
大致知道是因為命名實例導致單用戶模式啟動失敗,但不知道如何修改代碼。網上找了下資料,然后查看數據庫實例對應服務的屬性,在常規選項->可執行文件的路徑:"D:\SQL2012\MSSQL11.SQL12\MSSQL\Binn\sqlservr.exe" -sSQL12
-s后面接的是實例名,因此參考這行代碼將單用戶模式啟動cmd命令修改為:
d: cd D:\SQL2012\MSSQL11.SQL12\MSSQL\Binn sqlservr.exe -m -sSQL12
當然也可以直接在服務屬性的啟動參數中添加-m
從日志信息中找到對應的專用端口,DAC連接,查看當前最大並發數,確實為1,通過user connections重置最大並發數
問題1,日志信息並沒說要DAC連接去設置,只是說system administrator可以操作,但是在為1的情況下,顯然無法通過GUI去操作,但應該可以直接通過sqlcmd或新建查詢中修改。
問題2,GUI下設置的最大並發數,實際體現在sysconfigures.config=103對應的value,需重啟數據庫服務才生效,這個最大限制了sysprocesses.spid>50的記錄數
--補充 10:26 2014-7-31 已經測試,問題1,當最大並發連接數為1時,可以通過sqlcmd或新建查詢用語句修改。
當最大連接數設為1時,sqlcmd/新建查詢下使用sp_readerrorlog,報無法打開環回連接,錯誤信息和5月份代理服務異常一樣。
打開Windows事件日志,查看應用程序信息發現每次運行sp_readerrorlog,都會有兩行錯誤信息。
至此意識到是由於連接數的問題導致,無法讀取errorlog信息。將最大連接數設置成較大值,再運行就正常了。