原文:恢复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的时候添加足够的管理员,以便减少上述问题的出现。扩展阅读:

恢复SQLServer实例连接的更多相关文章

  1. (转)SQLServer实例讲解

    欢迎和大家交流技术相关问题: 邮箱: jiangxinnju@163.com 博客园地址: http://www.cnblogs.com/jiangxinnju GitHub地址: https://g ...

  2. 恢复SQLSERVER被误删除的数据(转——收藏)

    恢复SQLSERVER被误删除的数据 摘自:http://www.cnblogs.com/lyhabc/p/3683147.html 曾经想实现Log Explorer for SQL Server的 ...

  3. SqlServer nvarchar中的中文字符匹配,更改SqlServer实例和数据库排序规则的办法

    我们都知道在SqlServer中的nvarchar类型可以完美的存储诸如中文这种unicode字符,但是我们会发现有时候查询语句去查询nvarchar列的时候查不出来. 为什么nvarchar类型有时 ...

  4. 第十七章——配置SQLServer(4)——优化SQLServer实例的配置

    原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServ ...

  5. 恢复SQLSERVER被误删除的数据

    原文:恢复SQLSERVER被误删除的数据 恢复SQLSERVER被误删除的数据 曾经想实现Log Explorer for SQL Server的功能,利用ldf里面的日志来还原误删除的数据 这里有 ...

  6. 恢复SQLSERVER被误删除的数据(转)

    恢复SQLSERVER被误删除的数据 曾经想实现Log Explorer for SQL Server的功能,利用ldf里面的日志来还原误删除的数据 这里有一篇文章做到了,不过似乎不是所有的数据类型都 ...

  7. c# 使用MS SqlServer,连接成功,但是还报异常A connection was successfully established with the server, but then an error occurred during the login process. (provider: SSL Provider, error: 0。。。。

    c# 使用MS SqlServer,连接成功,但是还报异常A connection was successfully established with the server, but then an ...

  8. 命令行下从bak文件恢复sqlserver数据库方法

    命令行下从bak文件恢复sqlserver数据库方法 注:本文所示访问从SqlServer 2000 - 2014版都是通用的 参考:http://blog.sina.com.cn/s/blog_5c ...

  9. C 语言实例 - 连接字符串

    C 语言实例 - 连接字符串 C 语言实例 C 语言实例 使用 strcat() 连接两个字符串. 实例 #include <stdio.h> int main() { ], s2[], ...

随机推荐

  1. CentOS 6.4 文件夹打开方式

    CentOS 6.4 文件夹打开方式 在CentOS 6.4中,双击文件夹,默认会在新窗口中打开文件夹,没有路径.前进.后退这样的按钮,如果一个文件夹的路径很深,则需要打开n多的窗口才能找到最终想要的 ...

  2. 两个实验操作系统-ubuntu在安装配置pintos

    安前两次莫名其妙, 蛋疼的实验操作系统.. 首先下错了总结第一次. 使用最后gdb调试pintos什么时候, 这个错误将被报告: bochsrc.txt:8: Bochs is not compile ...

  3. Android应用开发-小巫CSDN博客client之显示博文具体内容

    Android应用开发-小巫CSDN博客客户端之显示博文具体内容 上篇博文给大家介绍的是怎样嵌入有米广告而且获取收益,本篇博客打算讲讲关于怎样在一个ListView里显示博文的具体信息.这个可能是童鞋 ...

  4. 13-7-5 android Tabhost功能实现

    开始使用了一个Activity做界面切换,采用visible.gone写法,感觉太麻烦了. layoutHousehold.setVisibility(View.GONE); layoutCamera ...

  5. linux sed命令详解(转)

    简介 sed 是一种在线编辑器,它一次处理一行内容.处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的 ...

  6. Effective C++规定45 额外的代码

    这部分是额外的代码博客,关键45术语思想已经实现. #include<iostream> using namespace std; template<typename T> c ...

  7. abstract修改方法

    abstract这种方法修饰,主要用在抽象类和抽象方法. 抽象的类是不可实例化的比如 public abstract class Test{ } 他能够含有抽象的方法 public abstract ...

  8. Git代理服务器设置和访问Github

    因为现在工作的网络环境有着非常严格的限制,.可以说,在最近的访问通过代理Github它采取了一些曲折的.也积累了一些相关经验.我们认为有必要注意什么. 符合"不要再发明轮子"宗旨, ...

  9. 更具体的描述JNI

    JNI事实上,Java Native Interface缩写,也就是说,java本地接口. 它提供了许多API实现和Java并与其他语言的沟通(主要C&C++). 也许很多人认为Java够劲. ...

  10. Mono for Android开发调研笔记

    安装完Mono for Android(简称:MonoDroid)之后,可以用MonoDevelop或Visual Studio来开发Mono for Android应用程序:目前只能在模拟器上调试和 ...