2023-01-05 12:19:31 发布人:hao333 阅读( 4395)
想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Windows身份验证。
想起着急哥之前问我的一个问题。某DBA删除了Windows登录用户,SQLSERVER服务器的认证方式为Windows认证。
我该怎么办?
我当时给他的回答是:重装系统数据库大师。
今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有了一些想法。
假设我们遇到很糟糕的情况
Sa被禁用,服务器身份验证处于Windows身份验证模式,Windows登录用户被删除,并且没有具有其他sysadmin角色的登录用户。
步骤一:
停止SQLSERVER:在命令行net上停止MSSQL Server
步骤二:
转到SQLSERVER的安装目录。
然后添加/m /f参数。
步骤三:为单用户模式启动SQLSERVER
步骤四:打开SSMS
这时候一定不要马上连接。你需要点击取消,然后点击左上角的新建查询。此步骤与DAC(专用管理员连接)的步骤相同。
你会发现,用Windows登录的用户,此时也可以登录。
步骤五:执行以下SQL脚本
1-打开xp_cmdshell函数2exec [sys]。[sp _ configure]@ configname=' XP _ cmdshell '-varchar(35)3 @ config value=1-int 4 reconfigurewithfoverride 567-修改注册表,身份验证修改为混合身份验证模式8 use[master]9go 10 exexp _ instance _ reg write n ' HKEY _本地_机器'n '软件\ Microsoft \ MSSQL server \ MSSQL server 'n '登录模式'reg _ dword,211GO1213 -创建登录名14CREATELOGIN[计算机名\计算机名15GO1617 -给予登录名的权限是sys admin 18 user master 19go 20 exec[sys]。[sp _ addsrvrolemember]@ logname=' computer name \ Administrator '-sysname 21 @ rolename=sysadmin-sysname 2223-关闭xp_cmdshell函数24exec [sys]。[sp _ configure]@ configname=' XP _ cmdshell '-varchar(35)25 @ config value=0-int 26 reconfigurithoverride
此时,身份验证方法已更改为混合身份验证方法。
步骤六:关闭并重新启动SQLSERVER
打开SQLSERVER配置管理器并启动SQLSERVER。
步骤七:登录到SQLSERVER
回到SSMS,你可以看到它此时已经恢复正常。
总结
感谢英雄i6first,以前我觉得不可能,没想到他想到用单用户模式开始进入SQLSERVER。
没有了SA密码,无法Windows集成身份登录,DBA怎么办?
有同事反映SQL无法正常登录。以前都是通过windows集成认证登录(sa密码早忘了)。今天他们改了服务器的机器名,但是现在无论如何都无法登录。
SQL登录时,如果采用windows集成认证,登录框会以“机器名\当前系统用户名”的格式显示登录名,登录名和密码为灰色,不允许用户输入。
我知道同事刚刚修改了服务器的机器名,所以SQL的登录框显示“新机器名\当前系统用户名”。要知道windows集成身份验证之所以可以登录,是因为SQL的登录名中已经包含了这个用户名,并且在安装SQL的时候就在SQL中记录了原来的用户名。如果更改机器名,“新机器名\当前系统用户名”肯定不能正常登录。
网上有人说可以用osqls实例名e(在命令行窗口输入)登录,然后修改sa的密码。一番尝试后发现是扯淡,因为这种方法的前提是你需要windows集成身份登录。
后来在微软官网看到一个文档,原来只要在SQL的启动参数中加一个“-m”的选项(记得在-m前加分号),然后需要重启SQL服务,再次用SQL Management Studio
-m表示单用户登录。细心的读者可能会质疑:只加了-m,最后却采用了windows集成认证。这个理论和以前使用的SQL OS的实例名-e有什么区别?
这是一个很专业的问题。当时我也不理解,觉得有点诡异,但结果是这样的,肯定有一定道理。后来在微软官网上发现了这段话。
使用的或windows选项以单用户模式启动sql server实例。然后,计算机的本地管理员组的任何成员都可以作为系统管理员固定服务器角色的成员连接到sql server实例。
大概的意思是说集成身份验证登陆就可以了。-m-f当在SQL的启动参数中添加了-m或者-f参数时,计算机本地管理员组的任何一个用户都可以
相关阅读
RelatedReading猜你喜欢
Guessyoulike