2013年1月27日 星期日

SQL Server - 如何取回最高權限帳號

        最近接到一個客戶的問題,因為客戶公司策略的關係,所以本身的登入帳號只有最小的權限,但是他們忘記了最高權限 [SysAdmin] 的密碼,所以需進行管理時無法有較高的權限登入,而在SQL Server 2008之後由於不會將 [BUILTIN\Administrators] 所以就算Domain Admin也無法登入,所以下列我們就來介紹如何進行解決。

1、登入後發現由於權限不足,所以也只有看到 sa 的帳號,但可惜 sa 的帳號也被禁止登入。


2、開始 -> 程式集 -> Microsoft SQL Server 2012 -> 組態工具 -> SQL Server 組態管理工具

3、點選 SQL Server (Instance Name) -> 內容 -> 啟動參數,此時請將 -m 的參數加入,然後再請將SQL Server的服務重新啟動。

PS:上述的動作主要是將SQL Server切換成單人管理模式,此時請勿讓其他的應用程式或使用者連線到SQL Server,所以請特別注意。


4、請開啟一個DOS Command視窗輸入下列的指令

4-1 透過 sqlcmd 連線到SQL Server
sqlcmd -S servername -E
4-2 指定一個可以登入 Window 的帳號
create login [domain\user name] from windows;
go
PS:此步驟新增的帳號請確認此帳號已有存在Windows中。

4-3 新增一個SQL Server的帳號
create login [user name] with password = 'password';
go

4-4 賦與 SysAdmin 權限到指定的帳號上。
exec sp_addsrvrolemember 'user name', 'sysadmin';
go




5、此時再請將步驟三中新增的啟動參數移除後再重新開機,你就可以發現設定的帳號已有最高的權限了。



參考連結:
Database Engine Service Startup Options
http://msdn.microsoft.com/en-us/library/ms190737.aspx
How to: Use the Dedicated Administrator Connection with SQL Server Management Studio
http://msdn.microsoft.com/en-us/library/ms178068(v=sql.105).aspx


關鍵字:DACDedicated Administrator ConnectionLost all Administrator Account in SQL ServerSingle User Mode

1 則留言:

  1. 您好,我想請問,當時我創建了一個Student的帳號
    但是重新登入時用sqlcmd -S 192.168.3x.1xx\sqlexpress,50001 -U Student -P (當時輸入的密碼)
    它卻顯示說"Microsoft SQL Server Native Client 11.0:使用者'Student'的登入失敗" 怎麼會這樣呢?
    我如果用信任模式(-E)進去查看 是有Student這個帳號的
    如果用圖型介面登入SQL Server到'安全性'下面並無看到我所創立的帳號
    是不是我哪個步驟做錯了呢??

    回覆刪除