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

SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法,第1张

概述今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Windows身份验证 怎麽办?? 我当时给他的答复是:重装系统数据库master 今天看到这篇文章没有了SA密码,无法Windows集成身份登录,DBA怎么办?,有思路了 假设我们遇到很糟糕的情况 sa被

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

想起来之前着急哥问我的一个问题,一个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 NHKEY_LOCAL_MACHINESoftware\Microsoft\MSsqlServer\MSsqlServerLoginMode211 12 13 创建登录名14 CREATE LOGIN 计算机名\administratorFROM windows;15 16 17 赋予登录名的权限为sysadmin18 USE master19 20 sp_addsrvrolemember@loginame  sysname21     @rolename = sysadmin 22 23 关闭xp_cmdshell功能24 25     0 26 WITH overrIDe

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

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

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

步骤七:登录sqlSERVER

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


总结

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

参考文章:GRANT 服务器权限 (Transact-SQL)

如有不对的地方,欢迎大家拍砖o(∩_∩)o 

2014-2-26补充:

在进行上面 *** 作之前,sql broSWER服务一定要开启,否则在进行步骤四的时候会提示数据库处于单用户模式,不能登录!!

2014-11-20补充:

今晚某童鞋找到我,说他禁用了windows登录用户和sa,无办法再登录sqlSERVER,服务器上跑着百万PV的网站

停机的话电话就会打爆,他使用了本文的方法,可惜不奏效

详细讲解:

如果禁用了sa和禁用了windows登录用户(注意:是禁用不是删除)

那么使用上述方法的时候,在启动sqlSERVER的时候会报错:windows帐户 计算机名/administrator 已被禁用

解决方法:在windows上新建一个 administrator组的windows帐户 比如 test帐户,隶属于administrator组

然后切换windows登录用户到test ,使用上面的方法,用“管理员身份运行” CMD,以/m /f 启动sqlserver

用sqlcmd 进入命令行就可以了

原理:sqlserver里的windows帐户是跟windows的帐户用SID绑定映射的

sql首先使用你当前登录的windows帐户来登录sqlserver,这样就导致了当windows帐户被禁用的话他不会使用sa来登录(也就是其他拥有sysadmin权限的

登录用户来登录,不考虑sql登录验证)

我这里的方法是切换到别的windows帐户下,这样sql就找不到当前windows帐户跟sql里面的登录用户的SID登录映射

sqlSERVER就会使用sa来登录

总结

以上是内存溢出为你收集整理的SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法全部内容,希望文章能够帮你解决SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1160050.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-01
下一篇 2022-06-01

发表评论

登录后才能评论

评论列表(0条)

保存