来自 新葡亰数据库 2019-11-27 16:48 的文章
当前位置: 澳门新葡亰app > 新葡亰数据库 > 正文

我登录计算机进来就用的这个账号,无法Windows集

 

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

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

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

怎麽办??

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

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

澳门新葡亰app 1

澳门新葡亰app 2


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

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

澳门新葡亰app 3

澳门新葡亰app 4

澳门新葡亰app 5

步骤一

停掉SQLSERVER:在命令行 net stop mssqlserver

澳门新葡亰app 6

步骤二

转到SQLSERVER的安装目录

澳门新葡亰app 7

澳门新葡亰app 8

然后加上/m /f   参数

 

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

澳门新葡亰app 9

步骤四:打开SSMS

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

澳门新葡亰app 10

澳门新葡亰app 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'SoftwareMicrosoftMSSQLServerMSSQLServer', 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,再重新启动

澳门新葡亰app 12

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

澳门新葡亰app 13

步骤七:登录SQLSERVER

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

澳门新葡亰app 14

澳门新葡亰app 15


澳门新葡亰官网APP,总结

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

 

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

 

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

 

2014-2-26补充:

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

 

澳门新葡亰app,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来登录

 

 

 

问题描述:

本地装了两个实例,一个是SQLEXPRESS,可以正常操作。但是另一个开发常用的实例MSSQLSERVER却连Windows身份验证都报错,报的错误也是很奇葩,怎么会找不到Administrator那,我登录计算机进来就用的这个账号。

详细错误如下:

无法连接到 xxx。

用户 'xxxAdministrator' 登录失败。 (.Net SqlClient Data Provider)

有关帮助信息,请单击:  

服务器名称: xxx
错误号: 18456
严重性: 14
状态: 1
行号: 65536

解决方案:

 

首先在微软上搜索18456,找到了这个错误的详细说明,地址

看完之后得出了一个结论,似乎跟这个账号的权限有关,需要给这个Administrator 赋一个sqlserver里面的管理员的权限,sysadmin。然后就想先用sa登录,然后给这个用户赋权。

 

可是问题又来了,sa密码我也不知道!

 

无解,只好询问同事,同事发了一个连接,

问题完美得到解决。

 

大概思路是这样:

1,先停服务

2,通过cmd,以单用户模式登录sqlserver,理论参考)

3,给Administrator 用户 赋权

4,关闭cmd,重启服务

 

打开Sqlserver,以Windows身份登录,完美,进去了。然后在修改sa的密码即可。

 

 

 

 

 

 

本文由澳门新葡亰app发布于新葡亰数据库,转载请注明出处:我登录计算机进来就用的这个账号,无法Windows集

关键词: