MSSqlServer 該帳戶當前被鎖定,所以用戶 'sa' 登錄失敗。系統管理員無法將該帳戶解鎖


SQL Server 2012 sa 用戶被鎖定的問題


一:無法使用sa用戶登錄,提示:“登錄失敗”,也沒有進一步的說明了。。。
二:用Windows賬戶能夠登錄“對象資源管理器”,但無法打開sa用戶的屬性,提示:“屬性IsLocked不可用於登錄"[sa].該對像可能沒有此屬性,也可能是訪問權限不足而無法檢索.(Microsoft.SqlServer.Smo)”,同樣也不能刪除。
這兩個問題后來被證實其實是一個原因造成的。其實這和操作系統有關系,在SQL SERVER的聯機叢書里得到一些啟發,大致就是,當在Windows Server 2003或更高版本環境下運行SQL Server 2005時,可以使用Windows 密碼策略機制,可以將 Windows Server 2003 中使用復雜性策略和過期策略應用於SQL Server 內部使用的密碼。這項功能需要通過 NetValidatePasswordPolicy() API 實現,該 API 只在 Windows Server 2003 和更高版本中提供。下面是一些詳細情況:
密碼復雜性要求
密碼復雜性策略通過增加可能密碼的數量來阻止強力攻擊。實施密碼復雜性策略時,新密碼必須符合以下原則:
密碼不得包含全部或“部分”用戶帳戶名。部分帳戶名是指三個或三個以上兩端用“空白”(空格、制表符、回車符等),或任何以下字符分隔的連續字母數字字符: - _ #;
密碼長度至少為六個字符;
密碼應該包含以下四類字符中的三類:
英文大寫字母 (A - Z)
英文小寫字母 (a - z)
十個基本數字 (0 - 9)
非字母數字(例如:!、$、# 或 %)
密碼過期
密碼過期策略用於管理密碼的使用期限。如果選中了密碼過期策略,則系統將提醒用戶更改舊密碼和帳戶,並禁用過期的密碼。
策略實施
密碼策略是針對各個登錄名實施的。使用 ALTER LOGIN 語句可以配置策略應用程序。配置密碼策略實施時,適用以下規則:
當 CHECK_POLICY 更改為 ON 時:
除非將 CHECK_EXPIRATION 顯式設置為 OFF,否則也會將其設置為 ON;
密碼歷史使用當前的密碼哈希值初始化;
當 CHECK_POLICY 更改為 OFF 時:
CHECK_EXPIRATION 也設置為 OFF;
清除密碼歷史;
lockout_time 的值被重置;
如果指定 MUST_CHANGE,則 CHECK_EXPIRATION 和 CHECK_POLICY 必須設置為 ON。否則該語句將失敗;
如果 CHECK_POLICY 設置為 OFF,則 CHECK_EXPIRATION 不能設置為 ON,否則ALTER LOGIN 語句將失敗。
在安裝SQL SERVER時,默認啟用了這樣的策略,而我當時輸入的sa密碼又很簡單(不滿足密碼復雜性要求),因此登陸時這些復雜的策略就禁止了登錄過程。同時也就導致了我不能修改sa用戶的信息(被自動鎖定)。明白了這個原理,再結合查到的一些資料,用如下T-SQL語句即可解決這個問題:
用WINDOWS賬戶登錄查詢分析器,輸入一下語句並執行:


ALTER LOGIN sa ENABLE ;
GO
ALTER LOGIN sa WITH PASSWORD = '' unlock, check_policy = off, check_expiration = off ;
GO


完成后,重新啟動SQL SERVER服務,即可正常使用sa賬戶了。


免責聲明!

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



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