SQL SERVER本地管理员和SA帐号无法登录的解决方案
这几天在讲SQL Server 2008的课程,今天头一天,因为主办方准备的环境是用做好的同一个虚拟机,然后分发到很多台实验用的机器后,用sysprepare这种工具,修改了电脑名称。一早就遇到大家无法登录到SQL Server的问题,不管是用本地管理员,还是SA帐号。
1.首先从Windows身份验证方式登录
2.右键点击“服务器”,选择“属性”
3.在左侧找到“安全性”,里面有个Windows身份登录,还有一个“SQL Server和Windows身份验证”,选择第二个。
4.重启SQLSERVER服务。(还是右键点击“服务器”,就是根节点,选择重启服务器
我分析下来,本地管理员无法登录的原因就是因为电脑名称修改了之后,现在的本地管理员的SID已经不是修改之前那个本地管理员的SID了,而SQL Server里面其实保存的是SID,并不是用户名称,所以导致他无法登录服务器。而至于用SA帐号无法登录,是因为主办方在准备这个环境的时候,并没有启用混合验证模式。
以前也遇到过类似的一个问题,但一下子忘记怎么解决的了。不管怎样,我们还是想办法解决掉了这个问题,参考了下面的博客文章
http://blogs.msdn.com/b/raulga/archive/2007/07/12/disaster-recovery-what-to-do-when-the-sa-account-password-is-lost-in-sql-server-2005.asp教程x
大致的步骤就是:
用本地管理员登录,停止SQL Server服务
修改SQL Server服务的启动参数,在原先的启动参数后面添加 “;-m”(不要带双引号),这是将SQL Server设置进入单用户模式
启动SQL Server服务,使用sqlcmd登录到SQL Server服务器
执行exec sp_addsvrrolemember ‘MachineNameAdministrator’ ‘sysadmin’;GO;(请注意,红色部分要替换为你的本地管理员帐号)
停止SQL Server服务,将原先添加的启动参数“;-m”删除掉
启动SQL Server服务
建议大家安装SQL Server的时候,还是设置混合验证模式和SA密码,然后要保护好这个密码。