轉(zhuǎn)載自我的博客:修改域名惹的禍
做了一件很腦殘的事,神不知鬼不覺,我將一臺(tái)存儲(chǔ)重要數(shù)據(jù)的服務(wù)器的域名修改了,該服務(wù)器是在Hyper-V中創(chuàng)建的VM,修改VM的域名之后,部署在該VM上SQL Server實(shí)例就沒有權(quán)限訪問了,通常的管理員賬戶也訪問不了,本地的Administrator賬戶沒有密碼,心想,這下完了,捅了這么大的婁子,服務(wù)器上1TB的數(shù)據(jù)怎么搞?雖然,數(shù)據(jù)最終被成功轉(zhuǎn)移,但是,過程十分曲折,禁不住感慨:當(dāng)年欠的技術(shù),必須一點(diǎn)點(diǎn)學(xué)回來(lái)。情懷不說了,上干貨。
VM上安裝的操作系統(tǒng)是Windows Server 2012 R2 Data Center,使用我的管理員賬戶登錄,登陸失敗。在登錄界面彈出警告消息: “The security database on the server does not have a computer account for this workstation trust relationship”。有這么一堵墻橫亙?cè)谖颐媲埃褪琼?xiàng)目組不記得本地管理員賬戶 Administrator 的密碼。

既然VM不能訪問,而我又必須登錄到VM,心里有點(diǎn)虛,Windows Server的安全系統(tǒng)是紙老虎嗎?不管怎么樣,不能不戰(zhàn)而被嚇倒,首先要解決的問題是如何破解本地管理員Administrator的密碼。VM上存儲(chǔ)的數(shù)據(jù)不能被破壞,只能通過Windows鏡像文件嘗試修改操作系統(tǒng)。如何重置本地管理員的密碼?感謝老黃的協(xié)助。
step1,修改VM的Firmware,從DVD驅(qū)動(dòng)器加載Windows的鏡像文件

step2,當(dāng)出現(xiàn)以下界面時(shí),按下任意鍵,從DVD驅(qū)動(dòng)器加載鏡像文件

step3,點(diǎn)擊“Repair your computer”,利用鏡像文件修復(fù)計(jì)算機(jī)

step4,選擇Troubleshoot,在這里能夠使用高級(jí)工具修復(fù)操作系統(tǒng)

step5,從高級(jí)選項(xiàng)中,選擇命令行(Command Prompt)進(jìn)行高級(jí)故障排除操作

step6,進(jìn)入命令行界面,修改VM開機(jī)加載的輔助程序
進(jìn)入到System32目錄下,先將輔助程序Utilman重命名為Utilman_bak,然后將cmd復(fù)制為Utilman。
百度百科:utilman.exe是一個(gè)系統(tǒng)進(jìn)程,為Windows輔助工具管理器程序。
C: cd \Windows\System32 ren Utilman.exe Utilman_bak.exe copy cmd.exe Utilman.exe
這樣做的原理是:修改VM開機(jī)加載的輔助程序,在Windows登錄界面上有輕松訪問(Ease of access)輔助工具。當(dāng)我們從登錄界面點(diǎn)擊輕松訪問時(shí),Windows會(huì)啟動(dòng)命令行工具(cmd),此時(shí),雖然我們沒有方法登錄到Windows Server中,但是,我們擁有系統(tǒng)的最高權(quán)限,通過cmd,我們可以進(jìn)行高級(jí)的故障排除,或者你想干的任何事。

step7,重啟VM,重置Administrator的密碼
上述設(shè)置完成之后,重啟VM,正常進(jìn)入到登錄界面,點(diǎn)擊登錄界面的輕松訪問(Ease of access)輔助工具,

由于輔助工具的執(zhí)行文件被替換為cmd,Windows會(huì)啟動(dòng)命令行工具,在命令行工具中,通過net user命令,重置Administrator的密碼

step8,使用Administrator的新密碼登錄VM

終于,我還是成功登錄VM了,在第一時(shí)間打開SSMS,登錄SQL Server的默認(rèn)實(shí)例 VMxxx,發(fā)現(xiàn)登錄不上,SQL Server拋出以下錯(cuò)誤消息:

認(rèn)真查看該錯(cuò)誤消息,當(dāng)建立到SQL Server的連接時(shí),出現(xiàn)網(wǎng)絡(luò)相關(guān)或指定實(shí)例的錯(cuò)誤,SQL Server實(shí)例找不到或者不可訪問。在域中,雖然使用本地管理員賬戶登錄默認(rèn)實(shí)例,但是,由于域名服務(wù)器的存在,仍然會(huì)出現(xiàn)本地管理員登錄不了本地的SQL Server默認(rèn)實(shí)例,根本原因是建立的網(wǎng)絡(luò)連接路由不到指定的SQL Server的實(shí)例名。在本機(jī)上,我們可以不通過網(wǎng)絡(luò)路由器,直接使用localhost,或 點(diǎn)(.)登錄本機(jī) ,經(jīng)過幾番曲折,SSMS登錄成功,終于打開數(shù)據(jù)庫(kù),喜極而泣。
但是,這不是真實(shí)的情況,實(shí)際上,在登錄SQL Server失敗時(shí),我走了另外一條曲折的路。因?yàn)?,?dāng)時(shí)的我有點(diǎn)慌張,誤以為是權(quán)限的問題,過程雖然曲折,但是,還是挺有趣,用到DAC(?Dedicated Administrator Connection,專用管理員連接)為本機(jī)增加數(shù)據(jù)庫(kù)的管理員權(quán)限。
step1,在命令行工具中關(guān)閉SQL Server服務(wù)
net stop MSSQLServer

step2,通過單用戶模式啟動(dòng)SQL Server服務(wù),只允許sqlcmd登錄SQL Server實(shí)例
net start MSSQLServer -msqlcmd

-msqlcmd:該參數(shù)指定以單用戶模式打開MSSQLServer服務(wù),只允許sqlcmd程序登錄該服務(wù)
step3,使用DAC連接到SQL Server實(shí)例
sqlcmd -A

-A:Logs in to SQL Server with a Dedicated Administrator Connection (DAC). This kind of connection is used to troubleshoot a server.
step4,將本地管理員授予sysadmin角色,如果本地管理員不是SQL Server實(shí)例的Login,需要新建Windows域登錄名
create login [VMxxx\Administrator] from windows with default_database=master; go alter server role sysadmin add member [VMxxx\Administrator] go

授予Administrator數(shù)據(jù)庫(kù)管理員的權(quán)限之后,使用SQL Server的默認(rèn)實(shí)例名依然登錄不上,后來(lái),靜下心來(lái),仔細(xì)看了看登錄失敗的錯(cuò)誤信息,才恍然大悟,特寫一篇隨筆,記錄一下自己無(wú)意“放火”和曲折“救火”的經(jīng)歷。在這里很感謝項(xiàng)目經(jīng)理麥扣的包容,老黃的協(xié)助,謝謝!
參考文檔:
破解windows系統(tǒng)開機(jī)登錄密碼的一種方法