帳戶鎖定、超最大連接數登錄


--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'. 原因: 密碼與所提供的登錄名不匹配。 [客戶端: **.**.**.**]
View Code

此時,我這邊還可以登錄,讓他那邊手動連接,得到下面的錯誤

查看賬戶登錄屬性->狀態->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.  [客戶端: **.**.**.**]
View Code

網上找到相關資料,密碼錯誤次數達到某個限制,賬戶將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,狀態: 32014-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信息。將最大連接數設置成較大值,再運行就正常了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM