修改域名惹的禍


做了一件很腦殘的事,神不知鬼不覺,我將一台存儲重要數據的服務器的域名修改了,該服務器是在Hyper-V中創建的VM,修改VM的域名之后,部署在該VM上SQL Server實例就沒有權限訪問了,通常的管理員賬戶也訪問不了,本地的Administrator賬戶沒有密碼,心想,這下完了,捅了這么大的婁子,服務器上1TB的數據怎么搞?雖然,數據最終被成功轉移,但是,過程十分曲折,禁不住感慨:當年欠的技術,必須一點點學回來。情懷不說了,上干貨。

VM上安裝的操作系統是Windows Server 2012 R2 Data Center,使用我的管理員賬戶登錄,登陸失敗。在登錄界面彈出警告消息: “The security database on the server does not have a computer account for this workstation trust relationship”。有這么一堵牆橫亘在我面前,就是項目組不記得本地管理員賬戶 Administrator 的密碼。

既然VM不能訪問,而我又必須登錄到VM,心里有點虛,Windows Server的安全系統是紙老虎嗎?不管怎么樣,不能不戰而被嚇倒,首先要解決的問題是如何破解本地管理員Administrator的密碼。VM上存儲的數據不能被破壞,只能通過Windows鏡像文件嘗試修改操作系統。如何重置本地管理員的密碼?感謝老黃的協助。

step1,修改VM的Firmware,從DVD驅動器加載Windows的鏡像文件

step2,當出現以下界面時,按下任意鍵,從DVD驅動器加載鏡像文件

step3,點擊“Repair your computer”,利用鏡像文件修復計算機

step4,選擇Troubleshoot,在這里能夠使用高級工具修復操作系統

step5,從高級選項中,選擇命令行(Command Prompt)進行高級故障排除操作

step6,進入命令行界面,修改VM開機加載的輔助程序

進入到System32目錄下,先將輔助程序Utilman重命名為Utilman_bak,然后將cmd復制為Utilman。

百度百科:utilman.exe是一個系統進程,為Windows輔助工具管理器程序。

C:
cd \Windows\System32
ren Utilman.exe Utilman_bak.exe
copy cmd.exe  Utilman.exe

這樣做的原理是:修改VM開機加載的輔助程序,在Windows登錄界面上有輕松訪問(Ease of access)輔助工具。當我們從登錄界面點擊輕松訪問時,Windows會啟動命令行工具(cmd),此時,雖然我們沒有方法登錄到Windows Server中,但是,我們擁有系統的最高權限,通過cmd,我們可以進行高級的故障排除,或者你想干的任何事。

step7,重啟VM,重置Administrator的密碼

上述設置完成之后,重啟VM,正常進入到登錄界面,點擊登錄界面的輕松訪問(Ease of access)輔助工具,

由於輔助工具的執行文件被替換為cmd,Windows會啟動命令行工具,在命令行工具中,通過net user命令,重置Administrator的密碼

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

終於,我還是成功登錄VM了,在第一時間打開SSMS,登錄SQL Server的默認實例 VMxxx,發現登錄不上,SQL Server拋出以下錯誤消息:

認真查看該錯誤消息,當建立到SQL Server的連接時,出現網絡相關或指定實例的錯誤,SQL Server實例找不到或者不可訪問。在域中,雖然使用本地管理員賬戶登錄默認實例,但是,由於域名服務器的存在,仍然會出現本地管理員登錄不了本地的SQL Server默認實例,根本原因是建立的網絡連接路由不到指定的SQL Server的實例名。在本機上,我們可以不通過網絡路由器,直接使用localhost,或 點(.)登錄本機 ,經過幾番曲折,SSMS登錄成功,終於打開數據庫,喜極而泣。

但是,這不是真實的情況,實際上,在登錄SQL Server失敗時,我走了另外一條曲折的路。因為,當時的我有點慌張,誤以為是權限的問題,過程雖然曲折,但是,還是挺有趣,用到DAC( Dedicated Administrator Connection,專用管理員連接)為本機增加數據庫的管理員權限。

step1,在命令行工具中關閉SQL Server服務

net stop MSSQLServer

step2,通過單用戶模式啟動SQL Server服務,只允許sqlcmd登錄SQL Server實例

net start MSSQLServer -msqlcmd

-msqlcmd:該參數指定以單用戶模式打開MSSQLServer服務,只允許sqlcmd程序登錄該服務

step3,使用DAC連接到SQL Server實例

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實例的Login,需要新建Windows域登錄名

create login [VMxxx\Administrator]
from windows
with default_database=master;
go
alter server role sysadmin
add member [VMxxx\Administrator]
go

授予Administrator數據庫管理員的權限之后,使用SQL Server的默認實例名依然登錄不上,后來,靜下心來,仔細看了看登錄失敗的錯誤信息,才恍然大悟,特寫一篇隨筆,記錄一下自己無意“放火”和曲折“救火”的經歷。在這里很感謝項目經理麥扣的包容,老黃的協助,謝謝!

 

參考文檔:

破解windows系統開機登錄密碼的一種方法

SQLSERVER誤刪除了Windows登錄用戶驗證方式使用Windows身份驗證的解決方法

sqlcmd Utility


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM