微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

恢复SQLServer实例连接

译自:

http://www.mssqltips.com/sqlservertip/2682/recover-access-to-a-sql-server-instance/?utm_source=dailynewsletter&utm_medium=email&utm_content=headline&utm_campaign=2012829

 

问题:

开启sqlServer2008之后,本地管理员组不再需要手动添加,因为在安装的时候已经添加。你甚至只需要把当前用户手动添加到本地管理员用户即可。这意味着,特别是如果你不使用混合认证模式(或者忘记了sa密码),你可能会被拒绝登录自己的sqlServer实例。我遇到过一个情景,一个职员离开,但是他的windows账号,只拥有sqlServer管理员权限,会完全阻塞系统。当然也只有这个人知道sa密码。作为本地管理员甚至域管理员将对你没有帮助。

 

典型的解决方案是以单用户模式重启sqlServer。但是,这将要求一定时间的停机。对于某些系统,这是不可接受的。并且依靠管理服务器的需要,可能没有切实可行的等待维护服务器的计划。

 

一个更加极端的方法关闭sqlServer,复制所有MDF/LDF文件,安装新的sqlServer实例,并附加所有用户数据库。除了停机时间外,你还要面对重新创建系统数据库登录名、连接服务器、作业和其他数据库以外的元素以使得系统能够重新使用。另外,除非你卸载旧的实例,不然新的实例需要使用命名实例,会导致所有客户端应用都需要跟着升级

 

解决方案:

使用以下方法可以无痛、不停机解决上面问题:PsExec。但是这不是它的主要设计目标。它允许你以NT AUTHORITY\SYstem账号运行程序,和“常规”管理员账号不同——具有天生访问sqlServer的权限。

这个进程的使用非常简单。登录sqlServer运行的服务器,并要具有本地管理员权限的账号。下载并打开PsExec.exe。以管理员身份打开。执行下列命令,注意路劲填写你sqlServer Management Studio 的实际路径:

PsExec -s -i "C:\Program Files(x86)\Microsoft sql Server\110\Tools\Binn\ManagementStudio\Ssms.exe"

命令告诉PsExec以管理员(-s)和交互式(-i)来运行SSMS。

如果你不是管理员,会返回一条错误信息。你必须同意许可条款才能继续操作。当登录SSMS后,会提示你连接的服务器。你需要注意要用windows认证模式登录,并且用户名是硬编码的,如:NT AUTHORITY\SYstem:


当你登录以后,展开【对象资源管理器】,可以看到你是以NT AUTHORITY\SYstem来连接:


现在,你可以进入【安全性】→【登录名】,然后把你的账号添加为sysadmin。添加其他管理账号,修改sa密码,和其他能使你的实例处于可控状态的事情。

 

警告:

你必须假装成NTAUTHORITY\SYstem 的本地管理员。你必须禁用UAC。必须可以远程操作,但是自从主要精力放到虚拟机之后,我没测试过。

如果你更改了sa密码。并且外部程序使用sa账号,你需要升级这些程序。可以参考:a tip for updating the password used in maintenance plans. 使用CTRL+C退出命令行。

 

结论:

PsExec可以解决很多让你头疼的问题。也希望在安装sqlServer的时候添加足够的管理员,以便减少上述问题的出现。扩展阅读:

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐