SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法
SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法
今天看到这篇文章:没有了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脚本
--打开xp_cmdshell功能
EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)
@configvalue = 1 -- int
RECONFIGURE WITH override --修改注册表,修改身份验证为混合验证方式
USE [master]
GO
EXEC xp_instance_regwrite N'HKEY_LOCAL_MACHINE', N'Software\Microsoft\MSSQLServer\MSSQLServer', N'LoginMode', REG_DWORD, 2
GO --创建登录名
CREATE LOGIN [计算机名\Administrator] FROM WINDOWS;
GO --赋予登录名的权限为sysadmin
USE master
GO
EXEC [sys].[sp_addsrvrolemember] @loginame = '计算机名\Administrator', -- sysname
@rolename = sysadmin -- sysname --关闭xp_cmdshell功能
EXEC [sys].[sp_configure] @configname = 'xp_cmdshell', -- varchar(35)
@configvalue = 0 -- int
RECONFIGURE 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身份验证的解决方法
今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Win ...
- SQLSERVER误删Windows登录用户
SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法 SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇 ...
- SQL Server 2008 Windows身份验证改为混合模式身份验证 及修改sa密码
由于需要,要把SQL2008单一的Windows身份验证改为混合模式身份验证.在此做一备忘. 步骤: 1.用Windows身份验证方式进入SQL2008,在[对象资源管理器]右键击[根目录]:
- 1、传统身份验证和JWT的身份验证
1.传统身份验证和JWT的身份验证 传统身份验证: HTTP 是一种没有状态的协议,也就是它并不知道是谁是访问应用.这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过 ...
- true是表示使用身份验证,否则不使用身份验证
?phpclass smtp{/* Public Variables */var $smtp_port;var $time_out;var $host_name;var $log_file;var $ ...
- PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法
PHP XAMPP windows环境安装扩展redis 致命错误: Class 'Redis' not found解决方法 1.电脑需要先安装redis服务端环境,并在安装目录下打开客户端redis ...
- Windows XPSP3通过网络级身份验证方式连接Windows Server 2008远程桌面
远程桌面大大方便了大家的日常管理工作,Windows Server 2008同样秉承这一优秀特性,并引入网络级身份验证(NLA)作为远程桌面连接的默认身份验证方式. 网络级身份验证 (NLA) 是一种 ...
- SQL Server 2008 Windows身份验证改为混合模式身份验证
1.在当前服务器右键进入“属性页”->“安全性”->勾选Sql Server和Windows身份验证模式->确定. 由于默认不启用sa,所以如果启用sa账户登录,则还需要如下设置: ...
- windows远程桌面连接时,显示发生身份验证错误,给函数提供的身份无效
摘自:https://www.landui.com/help/show-7787 初次看到这个错误的时候懵了.访问给的地址一看,发现大概意思是不安全了,微软要更新一下 凭据安全支持提供程序协议 (Cr ...
随机推荐
- nodejs创建http服务器
之前有简单介绍nodejs的一篇文章(http://www.cnblogs.com/fangsmile/p/6226044.html) HTTP服务器 Node内建有一个模块,利用它可以很容易创建基本 ...
- python爬取github数据
爬虫流程 在上周写完用scrapy爬去知乎用户信息的爬虫之后,github上star个数一下就在公司小组内部排的上名次了,我还信誓旦旦的跟上级吹牛皮说如果再写一个,都不好意思和你再提star了,怕你们 ...
- Velocity初探小结--Velocity在spring中的配置和使用
最近正在做的项目前端使用了Velocity进行View层的数据渲染,之前没有接触过,草草过了一遍,就上手开始写,现在又回头细致的看了一遍,做个笔记. velocity是一种基于java的模板引擎技术, ...
- AJAX 大全
本章内容: 简介 伪 AJAX 原生 AJAX XmlHttpRequest 的属性.方法.跨浏览器支持 jQuery AJAX 常用方法 跨域 AJAX JsonP CORS 简单请求.复制请求.请 ...
- iOS app内存分析套路
iOS app内存分析套路 Xcode下查看app内存使用情况有2中方法: Navigator导航栏中的Debug navigator中的Memory Instruments 一.Debug navi ...
- MongoDB学习笔记~对集合属性的操作
回到目录 $unset清除元素 请注意在单个数组元素上使用$unset的结果可能与你设想的不一样.其结果只是将元素的值设置为null,而非删除整个元素.要想彻底删除某个数组元素,可以用$pull 和$ ...
- 乐乎环球WiFi
乐乎环球WiFi招商加盟 随身WiFi设备 乐乎环球Wifi是由北京蔚蓝创智科技有限公司研发的产品,是一款可以在全球100多个国家和地区实现免漫游4G高速上网的随身WiFi设备.和普通MiFi设备相比 ...
- Spark Streaming+Kafka
Spark Streaming+Kafka 前言 在WeTest舆情项目中,需要对每天千万级的游戏评论信息进行词频统计,在生产者一端,我们将数据按照每天的拉取时间存入了Kafka当中,而在消费者一端, ...
- Windows下Nginx配置SSL实现Https访问(包含证书生成)
Vincent.李 Windows下Nginx配置SSL实现Https访问(包含证书生成) Windows下Nginx配置SSL实现Https访问(包含证书生成) 首先要说明为什么要实现https ...
- Centos 6.6 下搭建php5.2.17+Zend Optimizer3.3.9+Jexus环境
(为何安装php5.2.17这个版本 因为phpweb这个程序用到了Zend Optimizer3.3.9 这个东东已经停止更新了 最高支持5.2版本的php 所以就有了一晚上填坑的自己和总结了这篇文 ...