单用户模式是 SQL Server 的一种启动模式,通常用于紧急维护、恢复和管理操作。在这种模式下,SQL Server 只允许一个用户连接。这对于修复系统、重置密码和进行紧急恢复操作非常有用。以下是有关单用户模式的详细说明,包括其用途、如何启动、使用及退出该模式。

单用户模式的用途

  1. 系统恢复:修复系统数据库(如 master 数据库)时。
  2. 管理员锁定:如果所有管理员帐户都被锁定,可以使用单用户模式恢复访问权限。
  3. 恢复密码:重置管理员账户密码。
  4. 紧急维护:执行需要独占访问的紧急维护任务。


启动 SQL Server 到单用户模式

执行这个操作的用户必须具有服务器的本地管理员权限!


方法 1:使用 SQL Server 配置管理器
  1. 打开 SQL Server 配置管理器。
  2. 在左侧窗格中,选择 SQL Server 服务
  3. 在右侧窗格中,右键单击你的 SQL Server 实例,然后选择 属性
  4. 在“启动参数”选项卡中,添加 -m参数。
  • 确保启动参数列表中每个参数都用分号隔开。
  1. 点击 确定 并重启 SQL Server 服务。
方法 2:使用命令提示符
  1. 打开命令提示符(以管理员身份运行)。
  2. 停止 SQL Server 服务:
net stop MSSQLSERVER
  1. 启动 SQL Server 到单用户模式:
net start MSSQLSERVER /m
  1. 如果你使用的是命名实例,命令会稍有不同:
net start MSSQL$<实例名> /m

使用 sqlcmd 连接到 SQL Server

  1. 打开命令提示符。
  2. 使用 sqlcmd 连接到 SQL Server 实例:
sqlcmd -S <服务器名称> -E

如果你使用 SQL Server 身份验证,请使用以下命令:

sqlcmd -S <服务器名称> -U <现有的管理员用户名> -P <现有的管理员密码>

场景1:添加新的 SQL Server 数据库用户

  1. 创建新的 SQL Server 登录名:
CREATE LOGIN NewAdminUser WITH PASSWORD = 'Password123!';
GO

创建一个Windows身份验证的用户:

CREATE LOGIN [DOMAIN\NewAdmin] FROM WINDOWS;
GO
ALTER SERVER ROLE [sysadmin] ADD MEMBER [DOMAIN\NewAdmin];
GO
EXIT
  1. 将新的登录名添加为特定数据库的用户:
USE DatabaseName;
GO
CREATE USER NewAdminUser FOR LOGIN NewAdminUser;
GO
  1. 授予新的数据库用户适当的权限(例如 db_owner 权限):
USE DatabaseName;
GO
ALTER ROLE db_owner ADD MEMBER NewAdminUser;
GO

退出单用户模式

  1. 停止 SQL Server 服务:
net stop MSSQLSERVER
  1. 如果你是通过 SQL Server 配置管理器设置的启动参数,请删除 -m 参数。
  2. 重新启动 SQL Server 服务:
net start MSSQLSERVER

一个实际的例子

假设你要添加一个名为 NewAdminUser 的新的 SQL Server 数据库用户,并将其添加为 YourDatabaseName 数据库的 db_owner

  1. 启动 SQL Server 到单用户模式:
net stop MSSQLSERVER
net start MSSQLSERVER /m

2.使用 sqlcmd 连接到 SQL Server 实例:

sqlcmd -S <服务器名称> -E

3.在 sqlcmd 中输入以下 SQL 命令:

-- 创建新的 SQL Server 登录名
CREATE LOGIN NewAdminUser WITH PASSWORD = 'Password123!';
GO

-- 将新的登录名添加为数据库用户
USE DatabaseName;
GO
CREATE USER NewAdminUser FOR LOGIN NewAdminUser;
GO

-- 授予新的数据库用户 db_owner 权限
USE DatabaseName;
GO
ALTER ROLE db_owner ADD MEMBER NewAdminUser;
GO
EXIT

4.停止并重新启动 SQL Server 服务:

net stop MSSQLSERVER
net start MSSQLSERVER

5.最后使用刚才添加的用户登录并访问数据库即可。


【救援模式】SQL Server的救援模式-单用户模式_夏明亮