綠色資源網(wǎng):您身邊最放心的安全下載站! 最新軟件|熱門排行|軟件分類|軟件專題|廠商大全

綠色資源網(wǎng)

技術(shù)教程
您的位置:首頁數(shù)據(jù)庫類SQL Server → SQLSERVER誤刪SA密碼Windows登錄用戶的解決辦法

SQLSERVER誤刪SA密碼Windows登錄用戶的解決辦法

我要評論 2014/01/11 23:06:14 來源:綠色資源網(wǎng) 編輯:m.sonlywya.cn [ ] 評論:0 點擊:507次

想起來之前著急哥問我的一個問題,一個DBA刪除了Windows登錄用戶,而且SQLSERVER服務(wù)器的驗證方式是Windows身份驗證。

怎麼辦??

我當(dāng)時給他的答復(fù)是:重裝系統(tǒng)數(shù)據(jù)庫master

今天看到這篇文章沒有了SA密碼,無法Windows集成身份登錄,DBA怎么辦?,有思路了

假設(shè)我們遇到很糟糕的情況

sa被禁用,服務(wù)器身份驗證為Windows身份驗證模式,Windows登錄用戶被刪,沒有其他sysadmin角色的登錄用戶

步驟一

停掉SQLSERVER:在命令行 net stop mssqlserver

步驟二

轉(zhuǎn)到SQLSERVER的安裝目錄

然后加上/m /f   參數(shù)

步驟三:以為單用戶模式啟動SQLSERVER

步驟四:打開SSMS

這時候一定不要馬上進行連接,需要點擊取消,然后在左上角的點擊新建查詢,這個步驟跟DAC(專用管理員連接)的步驟是一樣的

你會發(fā)現(xiàn)用Windows登錄用戶這時候可以登錄

步驟五:執(zhí)行下面的SQL腳本

1 --打開xp_cmdshell功能 2 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35) 3     @configvalue = 1 -- int 4 RECONFIGURE WITH override 5  6  7 --修改注冊表,修改身份驗證為混合驗證方式 8 USE [master] 9 GO10 EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 211 GO12 13 --創(chuàng)建登錄名14 CREATE LOGIN [計算機名\Administrator] FROM WINDOWS;15 GO16 17 --賦予登錄名的權(quán)限為sysadmin18 USE master19 GO20 EXEC [sys].[sp_addsrvrolemember] @loginame = '計算機名\Administrator', -- sysname21     @rolename = sysadmin -- sysname22 23 --關(guān)閉xp_cmdshell功能24 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)25     @configvalue = 0 -- int26 RECONFIGURE WITH override

這時候身份驗證方式已經(jīng)改為混合驗證方式

步驟六:關(guān)掉SQLSERVER,再重新啟動

打開SQLSERVER配置管理器,啟動SQLSERVER

步驟七:登錄SQLSERVER

回到SSMS,可以看到這時候恢復(fù)正常了

總結(jié)

感謝i6first大俠,之前一直以為無法子了,想不到他想到了用單用戶模式啟動的方法來進入SQLSERVER。

沒有了SA密碼,無法Windows集成身份登錄,DBA怎么辦?

一同事反饋SQL無法正常登錄了,以前都是通過windows集成身份驗證登錄進去的(sa密碼早忘記了),今天就改了服務(wù)器的機器名,現(xiàn)在無論如何都登錄不進去。

SQL登錄時如果采用windows集成身份驗證,登錄框?qū)?ldquo;機器名\當(dāng)前系統(tǒng)用戶名”的格式顯示登錄名,而且登錄名和密碼都是灰色的,不允許用戶輸入。

了解到同事剛剛修改了服務(wù)器的機器名,因此在SQL的登陸框中顯示“新機器名\當(dāng)前系統(tǒng)用戶名”。要知道windows集成身份驗證能登錄的原因是在SQL的登錄名中已經(jīng)包括了該用戶名,原來的用戶名在SQL安裝的時候已經(jīng)記錄到了SQL中,如果機器名變更了,“新機器名\當(dāng)前系統(tǒng)用戶名”肯定無法正常登錄。

網(wǎng)上看到有人說可以采用OSQL–S instancename –E(在命令行窗口中輸入)登錄進去后再去修改sa的密碼,一番嘗試后發(fā)現(xiàn)是扯談,因為采用這種方式的前提是需要windows集成身份能夠登錄。

后來在微軟的官網(wǎng)上看到一篇文檔,原來只要在SQL的啟動參數(shù)中加一個“-m”的選項(記得在-m前加分號),然后需要重啟SQL服務(wù),再次用SQL Management Studiowindows集成身份驗證登陸就可以了。

-m表示單用戶登錄。細(xì)心的讀者可能會質(zhì)疑了:只是加了-m,但最后還是采用的windows集成身份驗證,理論說跟之前使用SQLOS –S instancename –E有什么區(qū)別呢?

這個問得非常專業(yè)。當(dāng)時我也沒有搞明白,覺得有點不可思議,但結(jié)果就是這樣,肯定有其道理。后來在微軟的官網(wǎng)上找到了這段話。

Start the instance of sql server in single-user mode by using either the -m or -f options. Any member of the computer's local Administrators group can then connect to the instance of SQL Server as a member of the sysadmin fixed server role.

大概的意思是說當(dāng)在SQL的啟動參數(shù)中添加了-m或者-f參數(shù)時,計算機本地管理員組的任何一個用戶都可以sysadmin的身份登錄到SQL

關(guān)鍵詞:SQLSERVER,解決辦法

閱讀本文后您有什么感想? 已有 人給出評價!

  • 1 歡迎喜歡
  • 0 白癡
  • 0 拜托
  • 0 哇
  • 0 加油
  • 0 鄙視