恢复SQLServer实例连接

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

时间: 2024-10-26 22:07:48

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

Sqlserver 远程连接的 TCP/IP 和 Named Pipes的区别

TCP/IP:  TCP/IP是 Internet 上广泛使用的通用协议.它与互连网络中硬件结构和操作系统各异的计算机进行通信.TCP/IP包括路由网络流量的标准,并能够提供高级安全功能.它是目前在商业中最常用的协议.将计算机配置为使用 TCP/IP可能会很复杂,但大多数联网的计算机已经配置正确.若要配置未在 SQL Server 配置管理器中出现的 TCP/IP 设置,请参阅Microsoft Windows 文档.  Named Pipes:  Named Pipes 是为局域网而开发的协议

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

原文:第十七章--配置SQLServer(4)--优化SQLServer实例的配置 前言: Sp_configure 可以用于管理和优化SQLServer资源,而且绝大部分配置都可以使用SQLServer ManagementStudio的图形化界面实现. 准备工作: 为了查看SQLServer当前实例的配置,也可以使用下列查询来实现: SELECT * FROM sys.configurations ORDER BY name 下面是本机的结果: 步骤: 1. 执行下面语句,以便看到实例级别的

【转帖】SQLServer登录连接失败(error:40-无法打开到SQLServer的连接)的解决方案

在与SQLServer建立连接时出现与网络相关的或特定与实例的错误.未找到或无法访问服务器.请验证实例名称是否正确并且SQL SERVER已配置允许远程链接.(provide:命名管道提供程序,error:40 -无法打开到SQL Server的连接)(Microsoft SQL Server,错误:2) 我刚刚在登录连接SQL Server 时遇到了如上问题,在综合了网上的各种解决方案后,终于成功的解决了该问题,并整理经验如下,供后来者使用. 步骤一:打开SQL Server 配置管理器 双击

用asp.net还原与恢复sqlserver数据库

上次做了个项目,涉及到数据库的还原和恢复,到网上找了一下,是利用SQLDMO实现的,只要添加SQLDMO引用就好了,然后利用下边的类的方法就可以实现了.我把原作者的类扩充了一下,可以自动识别web.config里 的数据库连接字符串,可以通过变量设置还原恢复的信息.需要注意的时还原,还原的时候问题最大了,有别的用户使用数据库的时候无法还原,解决办法就是在MASTER数据库中添加一个存储过程:create proc killspid (@dbname varchar(20))asbegindecl

亚马逊AWS学习——多网络接口下配置EC2实例连接公网的一个“bug”

之前在<亚马逊AWS学习--EC2的自定义VPC配置>这篇文章中讲述了如何设置自定义VPC并使自己的EC2实例能够连接公网.本篇说一下连接公网时会出现的一个小问题. 如题所示,在一个EC2实例具有多个网络接口的环境下,如果为其配置公网连接会有一个"bug".其实也不能说是"bug",而是AWS网络环境的限制. 1. 主网络接口 我们知道,很多时候我们的一台主机需要有多个网络接口,以使其同时架设在不同的网络中.EC2实例创建时会有一个主网络接口,默认描述为

windows身份验证,那么sqlserver的连接字符串的

Data Source=计算机名称或ip地址;Initial Catalog=数据库名称;Integrated Security=True windows身份验证不需要psw的Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=master;Data Source=127.0.0.1 这个是个例子 你看下 windows身份验证,那么sqlserver的连接字符串的

如何恢复SQLServer表级数据详解

 最近几天,公司的技术维护人员频繁让我恢复数据库,因为他们总是少了where条件,导致update.delete出现了无法恢复的后果,加上那些库都是几十G.恢复起来少说也要十几分钟.为此,找了一些资料和工作总结,给出一下几个方法,用于快速恢复表,而不是库,但是切记,防范总比亡羊补牢好.上章分享了如何使用SQLCMD在SQLServer执行多个脚本详解需要的朋友可以看下. 在生产环境或者开发环境,往往都有某些非常重要的表.这些表存放了核心数据.当这些表出现数据损坏时,需要尽快还原.但是,正式环

修windows主机名以后修复sqlserver实例名一致性

1.验证一致性 select @@SERVERNAMESELECT SERVERPROPERTY('MachineName') 修改windows主机名以后,使用上面命令查看时显示不一致,需要修复. 2.使用如下脚本执行并修复DECLARE @server_name varchar(50);set @server_name = (select @@SERVERNAME);DECLARE @SERVER_PROPERTY varchar(50);set @SERVER_PROPERTY = CON

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

http://blog.sina.com.cn/s/blog_5cdf6f450102dwir.html 1.先使用restore filelistonly restore filelistonly from disk = 'E:\BaiduYunDownload\shifenzheng.bak' 2.进行恢复 restore database kaifang from disk = 'E:\BaiduYunDownload\shifenzheng.bak' with move 'linshi'