zoukankan      html  css  js  c++  java
  • 恢复SQLServer实例连接 (转载)

    问题:

    开启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的时候添加足够的管理员,以便减少上述问题的出现。

  • 相关阅读:
    ASP.NET 加密 Part.5(加密查询字符串)
    ASP.NET 加密 Part.3(非对称算法)
    ASP.NET 加密 Part.4(加密数据库中的敏感数据)
    ASP.NET 加密 Part.2(对称算法)
    正则表达式
    ASP.NET 自定义成员资格提供程序 Part.2(实现提供程序类:XmlMembershipProvider)
    ASP.NET 加密 Part.1(简介)
    ASP.NET 用户配置 Part.2(SQLProfileProvider)
    ASP.NET 用户配置 Part.1(理解:性能与限制)
    ASP.NET 自定义成员资格提供程序 Part.3(实现提供程序类:XmlRoleProvider)
  • 原文地址:https://www.cnblogs.com/qanholas/p/2802663.html
Copyright © 2011-2022 走看看