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

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

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

怎麽办??

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

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_身份验证_02


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

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统_03

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_Windows_04

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统_05

步骤一

停掉SQLSERVER:在命令行 net stop mssqlserver

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_身份验证_06

步骤二

转到SQLSERVER的安装目录

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_身份验证_07

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统_08

然后加上/m /f   参数

 

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_EXEC_09

步骤四:打开SSMS

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统_10

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_EXEC_11

你会发现用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 GO
10 EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2
11 GO
12 
13 --创建登录名
14 CREATE LOGIN [计算机名\Administrator] FROM WINDOWS;
15 GO
16 
17 --赋予登录名的权限为sysadmin
18 USE master
19 GO
20 EXEC [sys].[sp_addsrvrolemember] @loginame = '计算机名\Administrator', -- sysname
21     @rolename = sysadmin -- sysname
22 
23 --关闭xp_cmdshell功能
24 EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)
25     @configvalue = 0 -- int
26 RECONFIGURE WITH override



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

 

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_操作系统_12

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_身份验证_13

步骤七:登录SQLSERVER

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

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_Windows_14

sql server sa 身份验证登录已锁定 sqlserver身份验证登录失败_Windows_15


总结

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