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'SoftwareMicrosoftMSSQLServerMSSQLServer', 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 Studio的windows集成身份验证登陆就可以了。


  -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服务。

时间: 2024-11-08 22:58:49

SQLSERVER误删SA密码Windows登录用户的相关文章

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

原文:SQLSERVER误删除了Windows登录用户验证方式使用Windows身份验证的解决方法 SQLSERVER误删Windows登录用户验证方式使用Windows身份验证的解决方法 今天看到这篇文章:没有了SA密码,无法Windows集成身份登录,DBA怎么办? 想起来之前着急哥问我的一个问题,一个DBA删除了Windows登录用户,而且SQLSERVER服务器的验证方式是Windows身份验证 怎麽办?? 我当时给他的答复是:重装系统数据库master 今天看到这篇文章没有了SA密码,

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

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

更改 MSDE sa 密码和登录验证模式

更改 MSDE sa 密码和登录验证模式Microsoft SQL Desktop engine 2000 是一个常用的SQL支持数据库,但安装后其 sa 的默认密码为空,这样对数据安全有一定影响.因为MSDE2000是简化版本,无管理控制台,修改密码只能进入命令行方式.步骤:要注意的是要在切换了SQL的身份验证方式后才可以命令行修改密码.默认的SQL身份验证方式是Windows账户模式,要改为采用SQL身份验证. 要Windows账户身份验证模式切换到SQL的身份验证模式,请按以下步骤操作:

使用xp_cmdshell注销Windows登录用户(终端服务器超出最大连接数)_MsSql

公司日常项目更新使用TFP,服务器一般维护用远程桌面管理,所以经常登录到服务器, 但有时由于某种原因,登录到服务器后,帐号没有及时注销,致使后面无法登录到服务器, 显示错误如 出现这样的问题还真麻烦,跑机房光手续都要两三天才能搞好.还好公司一直保留有Sa帐号, 这就好办了,用SQL注销一个Windows登录用户即可. 首先打开xp_cmdshell--执行XP_CMDSHELL要开启xp_cmdshellEXEC sp_configure 'show advanced options', 1RE

SQL Server的sa密码丢失解决

在网上看了很多如何修改SQLServer2005的密码的方法.大多数都是转了同一个帖子: 用windows权限进入,然后修改当前实例属性中的安全项,然后重新启动就可以修改了,但是操作手顺与我的SQLServer貌似不同.大概是SP1之前可以这么做吧. 首先用windows账户登录,然后在master表里执行: <div codepanel"=""> EXEC sp_password NULL, '你的新密码', 'sa'   ------------以下为网络搜集

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

原文:没有了SA密码,无法Windows集成身份登录,DBA怎么办?       一同事反馈SQL无法正常登录了,以前都是通过windows集成身份验证登录进去的(sa密码早忘记了),今天就改了服务器的机器名,现在无论如何都登录不进去.       SQL登录时如果采用windows集成身份验证,登录框将会以"机器名\当前系统用户名"的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入.       了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示"新机

没有sa密码无法集成windows身份验证登录的解决方法_MsSql

SQL登录时如果采用windows集成身份验证,登录框将会以"机器名\当前系统用户名"的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入. 了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示"新机器名\当前系统用户名".要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,"新机器名\当前系统用户名"肯定无法正常登录. 网上看

没有sa密码无法集成windows身份验证登录的解决方法

SQL登录时如果采用windows集成身份验证,登录框将会以"机器名\当前系统用户名"的格式显示登录名,而且登录名和密码都是灰色的,不允许用户输入. 了解到同事刚刚修改了服务器的机器名,因此在SQL的登陆框中显示"新机器名\当前系统用户名".要知道windows集成身份验证能登录的原因是在SQL的登录名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,如果机器名变更了,"新机器名\当前系统用户名"肯定无法正常登录. 网上看

Windows网络用户登录密码的猜解

Windows网络用户密码猜解算法的主要思想是:利用Windows提供的窗口枚举函数EnumWindows ()找到网络登录窗口.利用子窗口枚举函数EnumChildWindows ()或GetNext-DlgTabItem()和GetWindowLong()定位网络登录窗口上的各个控件.利用SendDlgItemMessage()或SetDlgItemText()来输入用户名及密码.利用SendMessage()发送"确定"消息.这样一来,就利用程序完成了整个网络登录过程.在重复这个