灾难恢复:当SQL Server 2005的sa密码丢失后

灾难恢复:当SQL Server 2005的sa密码丢失后

原文地址:

http://blogs.msdn.com/b/raulga/archive/2007/07/12/disaster-recovery-what-to-do-when-the-sa-account-password-is-lost-in-sql-server-2005.aspx

参考:

http://msdn.microsoft.com/en-us/library/ms188236(en-US,SQL.90).aspx

http://msdn.microsoft.com/zh-cn/library/dd207004(v=SQL.100).aspx

本文所载方法,同样适用于SQL Server 2008

-----------------------------------------------------------------------------------------------------------------

你也许面对过丢失SQL Server sa密码的情况。也许你有从sysadmin服务器角色中删除内建管理员(builtin\administrator)的好习惯,直到某一天你发现sysadmin角色下没人了(意味着SQL Server没管理员咯)。这时你可能会想唯一的选择就是重装SQL Server然后附加数据库,或者干脆直接访问master数据库文件——这些方法都有损坏数据的危险。

SQL Server 2005提供一个不错的针对此种情况的灾难恢复的方法,这种方法不需要侵入master数据库而且会保持master DB中的任何对象和数据存储(比如登录信息、用户凭据或服务主密钥等)的完整——当SQL Server以单用户模式启动,Windows管理员组中的成员都有权限访问SQL Server,这种模式也叫做“维护模式”。

通过单用户模式,SQL Server 2005提供一个可以让Windows管理员在无通知的情况下使用相当于sysadmin角色的权限。这就允许Windows管理员账户执行一些维护任务,比如安装补丁之类。

为了使SQL Server以单用户模式启动,你可以在命令行中加入“-m”参数。你也可以用SQL Server配置管理工具(SQL Server Configuration Manager Tool),它为文件访问和其他特权提供完全控制。如果希望使用该工具恢复你的数据库系统,请参照如下几步:

1.打开“SQL Server 2005配置”菜单下的SQL Server配置管理工具

2.停止你想要恢复的SQL Server实例,停止对应的SQL Server Agent服务

3.切换到“高级”选项卡,在“启动参数”选项的属性文本框末尾加入“;-m”

4.点击“确定”按钮,重启SQL Server实例


注意:请确保“;”和“-m”之间没有空格,注册参数解析器对这种问题十分敏感。你可以在ERRORLOG文件(在SQL Server安装文件夹中)中查看到“SQL Server Started in single-user mode”这样的记录。

5.SQL Server以单用户模式启动后,Windows管理员账户就可以使用sqlcmd实用程序通过Windows验证连接到SQL Server了。你可以使用Transact-SQL命令比如sp_addsrvrolemember添加已存在的登录用户(也可以新建一个只要你愿意)到sysadmin服务器角色。下面的例子添加了一个“CONTOSO”域下的“Buck”账号到sysadmin服务器角色。

EXEC sp_addsrvrolemember 'CONTOSO\Buck', 'sysadmin';

GO


注意:要在Windows7中使用sqlcmd实用程序,需要以管理员身份运行Windows命令行。

6.一旦sysadmin权限恢复完成,请即在SQL Server配置管理工具中清除启动参数中的“;-m”,然后重新启动数据库实例。

重要安全提示:

本操作仅适合在没有任何其他方法可以以某种特权访问系统的情况下用来做灾难恢复。它需要能够被监控和发现的显式的和侵入性的操作,这包括:

l停止SQLServer并且用单用户模式重启动它

l通过Windows验证连接到SQL Server

原文地址:https://www.cnblogs.com/liangqihui/p/1992563.html