一同事反馈SQL没法正常登陆了,之前都是经过windows集成身份验证登陆进去的(sa密码早忘记了),今天就改了服务器的机器名,如今不管如何都登陆不进去。windows
SQL登陆时若是采用windows集成身份验证,登陆框将会以“机器名\当前系统用户名”的格式显示登陆名,并且登陆名和密码都是灰色的,不容许用户输入。服务器
了解到同事刚刚修改了服务器的机器名,所以在SQL的登录框中显示“新机器名\当前系统用户名”。要知道windows集成身份验证能登陆的缘由是在SQL的登陆名中已经包括了该用户名,原来的用户名在SQL安装的时候已经记录到了SQL中,若是机器名变动了,“新机器名\当前系统用户名”确定没法正常登陆。命令行
网上看到有人说能够采用OSQL–S instancename –E(在命令行窗口中输入)登陆进去后再去修改sa的密码,一番尝试后发现是扯谈,由于采用这种方式的前提是须要windows集成身份可以登陆。server
后来在微软的官网上看到一篇文档,原来只要在SQL的启动参数中加一个“-m”的选项(记得在-m前加分号),而后须要重启SQL服务,再次用SQL Management Studio的windows集成身份验证登录就能够了。blog
-m表示单用户登陆。细心的读者可能会质疑了:只是加了-m,但最后仍是采用的windows集成身份验证,理论说跟以前使用SQLOS –S instancename –E有什么区别呢?ip
这个问得很是专业。当时我也没有搞明白,以为有点难以想象,但结果就是这样,确定有其道理。后来在微软的官网上找到了这段话。文档
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.get
大概的意思是说当在SQL的启动参数中添加了-m或者-f参数时,计算机本地管理员组的任何一个用户均可以sysadmin的身份登陆到SQL中。相信读者看到这个地方就明白了。这里其实并无去检验登陆的用户是否在SQL在存在,只是检查该用户是否为本地计算机的管理组中的用户。it
好了,相信后面就不用过多累赘了,只是提醒下读者:修改了sa密码后记得把原来添加在SQL启动参数的-m删除掉,而后在重启SQL服务。io
参考资料:http://technet.microsoft.com/en-us/library/dd207004.aspx