在单用户模式下启动 SQL Server

在某些情况下,可能必须使用 startup option -m. 在单用户模式下启动 SQL Server 实例。例如,您可能要更改服务器配置选项或恢复已损坏的 master 数据库或其他系统数据库。 两个操作都需要在单用户模式下启动 SQL Server 的实例。

在单用户模式下启动 SQL Server 可使计算机本地 Administrators 组的任何成员作为 sysadmin 固定服务器角色的成员连接到 SQL Server 实例。 有关详细信息,请参阅在系统管理员被锁定时连接到 SQL Server

在单用户模式下启动 SQL Server 实例时,请注意下列事项:

  • 只有一个用户可以连接到服务器。

  • 不执行 CHECKPOINT 进程。 默认情况下,启动时自动执行此进程。

注意注意

在单用户模式下连接到 SQL Server 实例之前,停止 SQL Server Agent 服务;否则 SQL Server Agent 服务将使用该连接,从而使其阻塞。

在单用户模式下启动 SQL Server 实例时,SQL Server Management Studio 可以连接到 SQL Server。 Management Studio 中的对象资源管理器可能会失败,因为在某些操作中它需要使用多个连接。 若要在单用户模式下管理 SQL Server,可以执行 Transact-SQL 语句(仅通过 Management Studio 中的查询编辑器连接)或者使用 sqlcmd 实用工具

当您将 -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 资源故障转移到其他节点。

为解决此问题,请执行以下过程:

  1. 从 SQL Server 高级属性中删除 –m 启动参数。

  2. 使 SQL Server 资源脱机。

  3. 从该组的当前所有者节点,在命令提示符下发出以下命令: net start MSSQLSERVER /m。

  4. 从群集管理器或 SQL Server 资源仍处于脱机状态的故障转移群集管理控制台进行验证。

  5. 现在使用以下命令连接到 SQL Server 并且执行必需的操作:SQLCMD -E -S<servername>。

  6. 一旦完成该操作后,关闭命令提示符并且通过群集管理器使 SQL 和其他资源返回联机状态。

请参阅

参考

sqlcmd 实用工具

CHECKPOINT (Transact-SQL)

sp_configure (Transact-SQL)

概念

启动、停止或暂停 SQL Server 代理服务

用于数据库管理员的诊断连接

数据库引擎服务启动选项