SQLSERVER误删SA密码 无法Windows登录用户的解决办法

想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Windows身份验证。

怎麽办??

我当时给他的答复是:重装系统数据库master

今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有思路了

假设我们遇到很糟糕的情况

sa被禁用,服务器身份验证为Windows身份验证模式,Windows登录用户被删,没有其他sysadmin角色的登录用户

步骤一

停掉SQLSERVER:在命令行 net stop mssqlserver

步骤二

转到SQLSERVER的安装目录

然后加上/m /f 参数

步骤三:以为单用户模式启动SQLSERVER

步骤四:打开SSMS

这时候一定不要马上进行连接,需要点击取消,然后在左上角的点击新建查询,这个步骤跟DAC(专用管理员连接)的步骤是一样的

你会发现用Windows登录用户这时候可以登录

步骤五:执行下面的SQL脚本

1 --打开xp_cmdshell功能 2 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35) 3 @configvalue = 1 -- int 4 RECONFIGURE WITH override 5 6 7 --修改注册表,修改身份验证为混合验证方式 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 --创建登录名14 CREATE LOGIN [计算机名/Administrator] FROM WINDOWS;15 GO16 17 --赋予登录名的权限为sysadmin18 USE master19 GO20 EXEC [sys].[sp_addsrvrolemember] @loginame = '计算机名/Administrator', -- sysname21 @rolename = sysadmin -- sysname22 23 --关闭xp_cmdshell功能24 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)25 @configvalue = 0 -- int26 RECONFIGURE WITH override

这时候身份验证方式已经改为混合验证方式

步骤六:关掉SQLSERVER,再重新启动

打开SQLSERVER配置管理器,启动SQLSERVER

步骤七:登录SQLSERVER

回到SSMS,可以看到这时候恢复正常了

总结

感谢i6first大侠,之前一直以为无法子了,想不到他想到了用单用户模式启动的方法来进入SQLSERVER。

没有了SA密码,无法Windows集成身份登录,DBA怎么办?

一同事反馈SQL无法正常登录了,以前都是通过windows集成身份验证登录进去的(sa密码早忘记了),今天就改了服务器的机器名,现在无论如何都登录不进去。

SQL登录时如果采用windows集成身份验证,登录框将会以“机器名/当前系统用户名”的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入。

了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示“新机器名/当前系统用户名”。要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,“新机器名/当前系统用户名”肯定无法正常登录。

网上看到有人说可以采用OSQL–S instancename –E(在命令行窗口中输入)登录进去后再去修改sa的密码,一番尝试后发现是扯谈,因为采用这种方式的前提是需要windows集成身份能够登录。

后来在微软的官网上看到一篇文档,原来只要在SQL的启动参数中加一个“-m”的选项(记得在-m前加分号),然后需要重启SQL服务,再次用SQL Management Studiowindows集成身份验证登陆就可以了。

-m表示单用户登录。细心的读者可能会质疑了:只是加了-m,但最后还是采用的windows集成身份验证,理论说跟之前使用SQLOS –S instancename –E有什么区别呢?

这个问得非常专业。当时我也没有搞明白,觉得有点不可思议,但结果就是这样,肯定有其道理。后来在微软的官网上找到了这段话。

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.

大概的意思是说当在SQL的启动参数中添加了-m或者-f参数时,计算机本地管理员组的任何一个用户都可以sysadmin的身份登录到SQL中。相信读者看到这个地方就明白了。这里其实并没有去检验登录的用户是否在SQL在存在,只是检查该用户是否为本地计算机的管理组中的用户。

好了,相信后面就不用过多累赘了,只是提醒下读者:修改了sa密码后记得把原来添加在SQL启动参数的-m删除掉,然后在重启SQL服务。

(0)

相关推荐

  • win10系统windows defender无法打开解决办法

    有些安装win10的用户遇到无法启动windows defender的问题,这一般是安装过第三方安全软件,卸载后windows defender打不开,或者是系统的bug. win10系统window ...

  • 无法打开淘宝账号登录界面的解决办法

    淘宝是一个购物平台,如果你电脑上安装了杀毒软件的话,那么可能就会被拦截.下面,我们来看看无法打开淘宝账号登录界面的解决办法吧. 操作方法 01 关闭杀毒软件 打开淘宝的时候,先关闭杀毒软件,以免杀毒软 ...

  • windows常见故障及其解决办法

    一、经典XP故障案例分析 XP故障有太多太多,而要学会举一反三,就要看看从安装XP开始,我们通常会遇到哪些经典故障,我们又该如何解决? 安装启动、故障篇 故障1. 安装提示未知硬件错误 【故障现象】安 ...

  • tplogin.cn打开是电信登录页面的解决办法图文教程

    最近有不少用户向我反馈,在设置TP-Link无线路由器时,当在浏览器中输入tplogin.cn后,打开的却是一个电信光猫的登录页面,如下图所示。出现这种情况应该如何解决呢?不要着急,下面为您介绍详细的 ...

  • 163邮箱登录不上解决办法

    下面是网易在线客服的回答: 不能登录邮箱的原因有很多种哦,如您浏览器“隐私”或“安全”级别设置过高,或用户名、密码输入不正确、较长时间未登录被冻结等都会导致不能登录。请您先检查一下哦。 解决无法登录的 ...

  • steam登录密码错误无法登录问题的解决方法

    当我们更改了我们的steam密码,想要登录的时候却发现密码错误,无法登录,我们应该怎么办呢?接下来就让小编来告诉大家.具体如下:1.如果出现密码错误,很有可能就是我们忘记了我们的登录账号,我们可以在s ...

  • win10改用Microsoft账户登录闪退解决办法

    win10的诸如edge浏览器.应用商店等许多软件.服务和多设备互联需要Windows使用Microsoft账户登录,有用户发现使用本地账户登录后,"改用Microsoft账户登录" ...

  • Win10累积更新KB4013418/KB4013429补丁后卡死在登录界面?附解决办法

    Windows 10 的更新导致系统出现新的问题并不是什么新鲜事,不过有的问题可能会造成比较严重的影响. 此前由于Windows 10 Bug部分设备出现了掉盘的情况,这让不少不明所以的用户直接格盘或 ...

  • 禁止进行此项安装"Windows installer被禁用解决办法

    用户称自己安装office2003的时候出现以下故障: 解决方案: 解决方法一: 开始,运行regedit,打开注册表,找到HKEY_CLASSES_ROOTInstallerProducts4080 ...