SQL Server 如果本機管理者與 sa 帳戶都無法登入怎麼辦?

来源:互联网 发布:elementary os知乎 编辑:程序博客网 时间:2024/06/10 09:01

以下是帳戶被鎖定的畫面: (注意: 要輸入正確的帳號密碼才會顯示帳號已被鎖定的訊息)

這個解法有好多個面向可以探討,而且不同版本的 SQL Server 也會有不同的處理方法:

※ SQL Server 2005 的解法

如果你的 SQL Server Agent 可以啟動的話,那問題就會簡單很多,你只要把要登入的帳號加入到 SQLServer2005 的 SQLAgentUser 群組內,就有 sysadmin 權限可登入了,如上圖所示,就是到 本機使用者和群組 新增授權的帳戶到 SQL2008R2\SQLServer2005SQLAgentUser$SQL2008R2$SQL2005 即可。

登入後,修改 sa 帳戶,將 強制執行密碼原則 (Enforce password policy) 這個勾選項目拿掉即可,這個設定是讓 sa 帳戶立即取消「鎖定狀態」或變更密碼,就可以利用 sa 來登入了:

或者可以輸入以下 T-SQL 執行:

USE [master]GOALTER LOGIN [sa] WITH DEFAULT_DATABASE=[master],     DEFAULT_LANGUAGE=[us_english],     CHECK_EXPIRATION=OFF,     CHECK_POLICY=OFFGO

這裡值得特別一提的就是 強制執行密碼原則 (Enforce password policy),當勾選的時候,該 SQL Server 帳戶就會使用本機安全性原則的「帳戶鎖定原則」去限制帳戶登入的次數與鎖定的時間,如下圖所示:

所以,就算你的 sa 帳戶被鎖定,其實你可以慢慢等 15 分鐘,該帳號就可以重新嘗試登入了!(當然,如果連密碼都忘記的話,那就用上述的解法吧!)

 

※ SQL Server 2008 / SQL Server 2008 R2 的解法

由於 SQL Server 2008 的安全性相較於之前版本都來的嚴謹,他是用服務群組的概念來授予 SQL Agent 權限 (服務群組無法透過 GUI 介面新增使用者),因此無法透過上述 SQL Server 2005 的方式來跳過驗證,相對的解決方法也困難許多。(單純密碼打錯而被鎖定者除外,因為你只要等 15 分鐘就可以了)

如果真的連密碼都忘記,可以參考以下辦法:

1. 重新安裝 SQL Server,也就是常見的 3R 策略 (Reboot, Reformat, Reinstall)!

2. 找到舊有的 master 資料庫備份資料,並還原到你記得密碼的那個資料庫版本。

3. 讓 SQL Server 進入 單一使用者模式 (single-user mode),即可透過任意「本機管理者」登入資料庫!

以下是啟用單一使用者模式的方法:

在 進階 (Advanced) 頁籤的 啟動參數 (Startup Parameters) 欄位的最前面加上 -m; 並按下套用然後重新啟動服務:

啟動時請注意要先將 SQL Server Agent 服務給停止,否則因為 單一使用者模式 的關係,只要 SQL Server Agent 服務成功登入 SQL Server 你就無法再進入資料庫作維護了:

最後開啟 Management Studio (ssms) 後新增查詢,並執行以下 T-SQL 語法即可將本機 Administrator 管理者加入到 master 資料庫中,之後再修改啟動參數,將 -m; 移除即可讓 SQL Server 正常登入了。

USE [master]GOCREATE LOGIN [BUILTIN\Administrators]FROM WINDOWS WITH DEFAULT_DATABASE=[master]GOEXEC master..sp_addsrvrolemember     @loginame = N'BUILTIN\Administrators',     @rolename = N'sysadmin'GO

也是因為 單一使用者模式 的關係,在開啟 Management Studio 之後請不要試著先連接資料庫再新增查詢,而是直接新增查詢再登入資料庫!如果先連接資料庫的話,這個「單一使用者」就被你用掉了,所以會讓你無法再執行上述 T-SQL 語法,請參考以下步驟執行:

先執行新增查詢

這時才進行登入

這時才能夠執行 T-SQL

原创粉丝点击