西西軟件園多重安全檢測(cè)下載網(wǎng)站、值得信賴(lài)的軟件下載站!
軟件
軟件
文章
搜索

首頁(yè)西西教程數(shù)據(jù)庫(kù)教程 → SQLSERVER誤刪SA密碼Windows登錄用戶(hù)的解決辦法

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

相關(guān)軟件相關(guān)文章發(fā)表評(píng)論 來(lái)源:西西整理時(shí)間:2014/1/10 17:45:55字體大小:A-A+

作者:西西點(diǎn)擊:25次評(píng)論:0次標(biāo)簽: SQLSERVER

  • 類(lèi)型:數(shù)據(jù)庫(kù)類(lèi)大。594KB語(yǔ)言:中文 評(píng)分:7.7
  • 標(biāo)簽:
立即下載

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

怎麼辦??

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

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

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

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

步驟一

停掉SQLSERVER:在命令行 net stop mssqlserver

步驟二

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

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

步驟三:以為單用戶(hù)模式啟動(dòng)SQLSERVER

步驟四:打開(kāi)SSMS

這時(shí)候一定不要馬上進(jìn)行連接,需要點(diǎn)擊取消,然后在左上角的點(diǎn)擊新建查詢(xún),這個(gè)步驟跟DAC(專(zhuān)用管理員連接)的步驟是一樣的

你會(huì)發(fā)現(xiàn)用Windows登錄用戶(hù)這時(shí)候可以登錄

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

1 --打開(kāi)xp_cmdshell功能 2 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35) 3     @configvalue = 1 -- int 4 RECONFIGURE WITH override 5  6  7 --修改注冊(cè)表,修改身份驗(yàn)證為混合驗(yàn)證方式 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 [計(jì)算機(jī)名\Administrator] FROM WINDOWS;15 GO16 17 --賦予登錄名的權(quán)限為sysadmin18 USE master19 GO20 EXEC [sys].[sp_addsrvrolemember] @loginame = '計(jì)算機(jī)名\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

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

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

打開(kāi)SQLSERVER配置管理器,啟動(dòng)SQLSERVER

步驟七:登錄SQLSERVER

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

總結(jié)

感謝i6first大俠,之前一直以為無(wú)法子了,想不到他想到了用單用戶(hù)模式啟動(dòng)的方法來(lái)進(jìn)入SQLSERVER。

沒(méi)有了SA密碼,無(wú)法Windows集成身份登錄,DBA怎么辦?

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

SQL登錄時(shí)如果采用windows集成身份驗(yàn)證,登錄框?qū)?huì)以“機(jī)器名\當(dāng)前系統(tǒng)用戶(hù)名”的格式顯示登錄名,而且登錄名和密碼都是灰色的,不允許用戶(hù)輸入。

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

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

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

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

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

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.

大概的意思是說(shuō)當(dāng)在SQL的啟動(dòng)參數(shù)中添加了-m或者-f參數(shù)時(shí),計(jì)算機(jī)本地管理員組的任何一個(gè)用戶(hù)都可以sysadmin的身份登錄到SQL中。相信讀者看到這個(gè)地方就明白了。這里其實(shí)并沒(méi)有去檢驗(yàn)登錄的用戶(hù)是否在SQL在存在,只是檢查該用戶(hù)是否為本地計(jì)算機(jī)的管理組中的用戶(hù)。

好了,相信后面就不用過(guò)多累贅了,只是提醒下讀者:修改了sa密碼后記得把原來(lái)添加在SQL啟動(dòng)參數(shù)的-m刪除掉,然后在重啟SQL服務(wù)。

    相關(guān)評(píng)論

    閱讀本文后您有什么感想? 已有人給出評(píng)價(jià)!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過(guò)難過(guò)
    • 5 囧
    • 3 圍觀(guān)圍觀(guān)
    • 2 無(wú)聊無(wú)聊

    熱門(mén)評(píng)論

    最新評(píng)論

    發(fā)表評(píng)論 查看所有評(píng)論(0)

    昵稱(chēng):
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評(píng)論需要經(jīng)過(guò)審核才能顯示)