在某些情况下,可能需要使用 启动选项 -m 在单用户模式下启动 SQL Server 实例。例如,你可能想要更改服务器配置选项或恢复损坏的主数据库或其他系统数据库。 这两个作都需要在单用户模式下启动 SQL Server 实例。
在单用户模式下启动 SQL Server 可使计算机本地 Administrators 组的任何成员作为 sysadmin 固定服务器角色的成员连接到 SQL Server 实例。 有关详细信息,请参阅“ 当系统管理员被锁定时连接到 SQL Server”。
在单用户模式下启动 SQL Server 实例时,请注意以下事项:
只有一个用户可以连接到服务器。
不执行 CHECKPOINT 进程。 默认情况下,它在启动时自动执行。
注释
在以单用户模式连接到 SQL Server 实例之前,请先停止 SQL Server 代理服务。否则,SQL Server 代理服务会占用了连接,从而阻止其他连接。
在单用户模式下启动 SQL Server 实例时,SQL Server Management Studio 可以连接到 SQL Server。 Management Studio 中的对象资源管理器可能无法正常运行,因为在执行某些操作时它需要多个连接。 若要在单用户模式下管理 SQL Server,请仅通过 Management Studio 中的查询编辑器进行连接或使用 sqlcmd 实用工具来执行 Transact-SQL 语句。
将 -m 选项与 sqlcmd 或 Management Studio 配合使用时,可以限制到指定客户端应用程序的连接。 例如, -m“sqlcmd” 将连接限制为单个连接,并且该连接必须将其标识为 sqlcmd 客户端程序。 当您正在单用户模式下启动 SQL Server 并且未知的客户端应用程序正在占用这个唯一的可用连接时,使用此选项。 若要通过 Management Studio 中的查询编辑器进行连接,请使用 -m“Microsoft SQL Server Management Studio - Query”。
重要
请勿使用此选项作为安全功能。 客户端应用程序提供客户端应用程序名称,并且提供假名称来作为连接字符串的一部分。
群集安装注意事项
对于群集环境中的 SQL Server 安装,当 SQL Server 以单用户模式启动时,群集资源 dll 会占用可用连接,从而阻止与服务器的任何其他连接。 当 SQL Server 处于此状态时,如果尝试将 SQL Server 代理资源联机,并且该资源被配置为影响组,可能会导致 SQL 资源故障转移到其他节点。
为解决此问题,请执行以下过程:
从 SQL Server 高级属性中删除 -m 启动参数。
使 SQL Server 资源脱机。
从此组的当前所有者节点的命令提示符处发出以下命令:
net start MSSQLSERVER /m.从群集管理员或故障转移群集管理控制台验证 SQL Server 资源是否仍然处于脱机状态。
现在使用以下命令连接到 SQL Server,并执行必要的操作:SQLCMD -E -S<servername>。
作完成后,请关闭命令提示符,并通过群集管理员联机恢复 SQL 和其他资源。
另请参阅
启动、停止或暂停 SQL Server 代理服务
用于数据库管理员的诊断连接
sqlcmd 实用工具
CHECKPOINT (Transact-SQL)
sp_configure(Transact-SQL)
数据库引擎服务启动选项