忘记管理员密码的补救办法
如果不慎遗忘 SQL Server 的管理员密码(即:遗忘了所有的管理员密码),或者需要强行添加另一个管理员帐号,这时候需要一种补救措施。 SQL Server 提供了单用户模式(也称为维护模式),便于用户更改服务器配置选项或恢复受损的系统数据库。在单用户模式下
如果不慎遗忘 SQL Server 的管理员密码(即:遗忘了所有的管理员密码),或者需要强行添加另一个管理员帐号,这时候需要一种补救措施。
SQL Server 提供了单用户模式(也称为维护模式),便于用户更改服务器配置选项或恢复受损的系统数据库。在单用户模式下启动 SQL Server,可以使本机Administrators 组的任何成员作为 sysadmin服务器角色的成员连接到 SQL Server 数据库引擎(实例)。
注意:在单用户模式启动之前,请停止 SQL Server Agent 服务,防止 SQL Server Agent 抢占此唯一的连接。
一、启用单用户模式
1. 打开SSCM(SQL Server配置管理器)
2. 停止SQL Server 引擎服务(实例)
3. 修改该引擎服务的属性
4. 添加单用户模式启动参数
(1) 适用于SQL Server 2012之前的旧版本
(2) 适用于SQL Server 2012及后陆版本
5. 完成上述修改后,启动数据库引擎服务
6. 检查启动日志,确认已进入了单用户模式
2014-10-13 13:55:08.95 spid7s SQL Server started in single-user mode. This an informational message only. No user action is required. |
注意:启动日志文件的位置及文件名由“启动参数”的“-e”参数指定。例如:
C:\Users\Administrator> notepad "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Log\ERRORLOG" |
二、越权添加或修改管理员帐户
1. 查看数据库引擎服务的列表(确保下一步操作时不会敲错实例的名称)
C:\Users\Administrator> sqlcmd -L 服务器: |
2. 打开命令行窗口,使用 sqlcmd 连接到数据库
C:\Users\Administrator> sqlcmd -S PC2014\SQL2008R2 |
3. 执行以下其中一条T-SQL语句,添加或修改帐号
(1)添加本地或域帐户到数据库管理员组
1> EXEC sp_addsrvrolemember 'PC2014\jim', 'sysadmin';
2> GO
(2)添加内置帐户到数据库管理员组
1> EXEC sp_addsrvrolemember 'BUILTIN\administrators', 'sysadmin';
2> GO
(3)如果遗忘了旧密码,重置密码 (官方不推荐使用sp_password)
1> Alter Login [BUILTIN\administrator] with password='newpassword';
2> GO
(4)如果还记得旧密码,修改密码
1> Alter Login [sa] with password='newpassword' old_password='oldpassword';
2> GO
注意:如果SA帐户被禁用,则
1> Alter Login [sa] ENABLE;
2> GO
注意:如果服务器身份验证模式仅为“Windows身份验证模式”,那么需要改为“SQL Server和Windows身份验证模式”,才可以使用sa帐户。修改此模式需要修改注册表,注册表项位于:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SQL Server\\MSSQLServer,将LoginMode改为2即可。
“实例ID”的命名格式默认为“MSSQL.”,例如 “MSSQL12.MSSQLSERVER”。这个设置是在安装SQL Server时指定的,安装向导将使用这个“实例ID”创建对应的文件夹。
三、启动数据库引擎服务
1. 打开SSCM,修改数据库引擎的属性,将“-m ”参数从启动参数中移除。
2. 启动数据库引擎服务,以新建或修改过的数据库管理员帐户连接到数据库。
附注:直接使用命令行启动单用户模式的方法
1. 找到 sqlservr.exe 的路径
2. 复制 sqlservr.exe 到命令行窗口,添加“-m”参数并运行
例如:
C:\Users\Administrator> "C:\Program Files\Microsoft SQL Server\MSSQL10_50.SQL2008R2\MSSQL\Binn\sqlservr.exe" -sSQL2008R2 -m |
启动日志将直接显示在命令行窗口,请检查启动日志,确认已成功启用了单用户模式。
注:还可以强行指定客户端程序。
(1) -m "sqlcmd" 。指定只有sqlcmd可以连接到SQL Server 实例。
(2) -m "Microsoft SQL Server Management Studio -Query" 。指定只有SSMS可以连接到SQL Server 实例。
3. 另外打开一个命令行窗口,即可以使用 sqlcmd 执行操作。
4. 如需停止SQL Server 实例,只需要在sqlservr.exe窗口按Ctrl-C(甚至直接关闭sqlservr.exe的窗口),在遇到提问时回答“Y”。
Do you wish to shutdown SQL Server (Y/N)?