你的位置:首页 > 操作系统

[操作系统]修改域名之后的曲折


做了一件很脑残的事,神不知鬼不觉,我将一台存储重要数据的服务器的域名修改了,该服务器是在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不能访问,首先要解决的问题是如何破解本地管理员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\System32ren Utilman.exe Utilman_bak.execopy cmd.exe Utilman.exe

这样做的原理是:修改VM开机加载的辅助程序,在Windows登录界面上有轻松访问(Ease of access)辅助工具。当我们从登录界面点击轻松访问时,Windows会启动命令行工具(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,或 点(.)登录本机 ,登录成功,终于打开数据库,喜极而泣。

但是,这不是真实的情况,实际上,在登录SQL Server失败时,我走了另外一条曲折的路。因为,当时的我有点慌张,误以为是权限的问题,过程虽然曲折,但是,还是挺有趣,用到DAC( Dedicated Administrator Connection,专用管理员连接)为本机增加数据库的管理员权限。

step1,在命令行工具中关闭SQL Server服务

net stop MSSQLServer

step2,通过单用户模式启动SQL Server服务,只允许sqlcmd登录SQL Server实例

net start MSSQLServer -msqlcmd

step3,使用DAC连接到SQL Server实例

sqlcmd -A

step4,将本地管理员授予sysadmin角色,如果本地管理员不是SQL Server实例的Login,需要新建Windows域登录名

create login [VMxxx\Administrator]from windowswith default_database=master;goalter server role sysadminadd member [VMxxx\Administrator]go

授予Administrator数据库管理员的权限,使用实例名依然登录不上,后来,静下心来,仔细看看了登录的错误信息,才恍然大悟,特写一篇随笔,记录一下。

在这里很感谢项目经理的包容,老黄的协助,谢谢!

 

参考文档:

破解windows系统开机登录密码的一种方法

SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法

sqlcmd Utility