譯自:
?
問題:
開啟SQLServer2008之后,本地管理員組不再需要手動添加,因為在安裝的時候已經默認添加。你甚至只需要把當前用戶手動添加到本地管理員用戶即可。這意味著,特別是如果你不使用混合認證模式(或者忘記了sa密碼),你可能會被拒絕登錄自己的SQLServer實例。我遇到過一個情景,一個職員離開,但是他的windows賬號,只擁有SQLServer管理員權限,會完全阻塞系統。當然也只有這個人知道sa密碼。作為本地管理員甚至域管理員將對你沒有幫助。
?
典型的解決方案是以單用戶模式重啟SQLServer。但是,這將要求一定時間的停機。對于某些系統,這是不可接受的。并且依靠管理服務器的需要,可能沒有切實可行的等待維護服務器的計劃。
?
一個更加極端的方法是關閉SQLServer,復制所有MDF/LDF文件,安裝新的SQLServer實例,并附加所有用戶數據庫。除了停機時間外,你還要面對重新創建系統數據庫、登錄名、連接服務器、作業和其他數據庫以外的元素以使得系統能夠重新使用。另外,除非你卸載舊的實例,不然新的實例需要使用命名實例,會導致所有客戶端應用都需要跟著升級。
?
解決方案:
使用以下方法可以無痛、不停機解決上面問題:PsExec。但是這不是它的主要設計目標。它允許你以NT AUTHORITY\SYSTEM賬號運行程序,和“常規”管理員賬號不同——具有天生訪問SQLServer的權限。
這個進程的使用非常簡單。登錄SQLServer運行的服務器,并要具有本地管理員權限的賬號。下載并打開PsExec.exe。以管理員身份打開。執行下列命令,注意路勁填寫你SQLServer Management Studio 的實際路徑:
PsExec -s -i "C:\Program Files(x86)\Microsoft SQL Server\110\Tools\Binn\ManagementStudio\Ssms.exe" |
命令告訴PsExec以管理員(-s)和交互式(-i)來運行SSMS。
如果你不是管理員,會返回一條錯誤信息。你必須同意許可條款才能繼續操作。當登錄SSMS后,會提示你連接的服務器。你需要注意要用windows認證模式登錄,并且用戶名是硬編碼的,如:NT AUTHORITY\SYSTEM:
當你登錄以后,展開【對象資源管理器】,可以看到你是以NT AUTHORITY\SYSTEM來連接:
現在,你可以進入【安全性】→【登錄名】,然后把你的賬號添加為sysadmin。添加其他管理賬號,修改sa密碼,和其他能使你的實例處于可控狀態的事情。
?
警告:
你必須假裝成NTAUTHORITY\SYSTEM 的本地管理員。你必須禁用UAC。必須可以遠程操作,但是自從主要精力放到虛擬機之后,我沒測試過。
如果你更改了sa密碼。并且外部程序使用sa賬號,你需要升級這些程序。可以參考: a tip for updating the password used in maintenance plans . 使用CTRL+C退出命令行。
?
結論:
PsExec可以解決很多讓你頭疼的問題。也希望在安裝SQLServer的時候添加足夠的管理員,以便減少上述問題的出現。擴展閱讀:
- Auditing SQL Server Permissions and Roles for the Server
- Server level permissions for SQL Server 2005 and SQL Server 2008
- When was the last time the SQL Server sa password changed?
- Get Back into SQL Server After You've Locked Yourself Out
- How to connect to SQL Server if you are completely locked out
?
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
