适用于:SQL Server - 仅限 Windows
本文介绍如何使用 SQL Server 配置管理器、SQL Server Management Studio (SSMS)、命令提示符中的 net 命令、Transact-SQL 或 PowerShell 在 Windows 上启动、停止、暂停、恢复或重启 SQL Server 数据库引擎、SQL Server 代理或 SQL Server Browser 服务。
对于 Linux 上的 SQL Server,请参阅在 Linux 上启动、停止和重启 SQL Server 服务。
识别服务
SQL Server 组件是作为 Windows 服务运行的可执行程序。 Windows 服务无需在计算机屏幕上显示任何活动,且无需在命令行上进行用户交互即可运行。
| 服务 | 说明 | 
|---|---|
| 数据库引擎服务 | 数据库引擎 服务可以是默认实例(每台计算机只有一个),也可以是计算机上多个命名实例中的一个。 使用 SQL Server 配置管理器找出在计算机上安装了哪些数据库引擎实例。 默认实例(如果安装)作为 SQL Server (MSSQLSERVER) 列出。 命名实例(如果安装)作为 SQL Server (<instance_name>) 列出。 默认情况下,SQL Server Express 作为 SQL Server (SQLEXPRESS) 安装。 | 
| SQL Server 代理服务 | SQL Server 代理服务可执行计划的管理任务(称为作业和警报)。 有关详细信息,请参阅 SQL Server Agent。 并不是所有版本的 SQL Server 都提供 SQL Server 代理。 有关 SQL Server 各个版次支持的功能列表,请参阅 SQL Server 2022 的各个版次及其支持的功能。 | 
| SQL Server Browser 服务 | SQL Server Browser 服务,可侦听对 SQL Server 资源的传入请求并为客户端提供有关计算机中安装的 SQL Server 实例的信息。 SQL Serve Browser 服务的单个实例由计算机上安装的所有 SQL Server 实例使用。 | 
如果暂停 数据库引擎 服务,则已连接的用户可以继续工作,直到其连接断开,但新用户无法连接到 数据库引擎。 如果想在停止服务之前等待用户完成其工作,请使用“暂停”,使其有时间完成正在进行的事务。 “继续”允许 数据库引擎 再次接受新连接。 SQL Server 代理服务无法暂停或继续。
SQL Server 配置管理器和 SSMS 使用以下图标显示服务的当前状态。
| SQL Server 配置管理器 | SQL Server Management Studio (SSMS) | |
|---|---|---|
| 已开始 | 服务名称旁边的图标上的绿色箭头 | 服务名称旁边的绿圈图标上的白色箭头 | 
| 已停止 | 服务名称旁边的图标上的红色正方形 | 服务名称旁边的红圈图标上的白色正方形 | 
| 已暂停 | 服务名称旁边的图标上的两条蓝色竖线 | 服务名称旁边的蓝圈图标上的两条白色竖线 | 
| 正在重启 | 红色正方形表示服务已停止,绿色箭头表示服务已成功启动 | 无 | 
根据服务的状态,使用 SQL Server 配置管理器或 SSMS 时无法访问所有可能的选项。 例如,如果服务已启动,“启动”不可用。
在群集上运行时, SQL Server 数据库引擎 服务最好使用群集管理器来管理。
权限
默认情况下,只有本地管理员组的成员能够启动、停止、暂停、继续或重启服务。 若要授予非管理员管理服务的能力,请参阅如何授予用户管理服务的权限。 (此过程在其他 Windows Server 版本上是类似的。)
使用 Transact-SQL SHUTDOWN 命令停止数据库引擎需要 sysadmin 或 serveradmin 固定服务器角色的成员资格并且不可转让。
SQL Server 配置管理器
SQL Server 配置管理器是 Microsoft 管理控制台程序的一个管理单元,所以其在某些版本的 Windows 中不显示为一个应用程序。 有关详细信息,请参阅 SQL Server Configuration Manager。
启动 SQL Server 配置管理器
从“开始”菜单中,依次选择“所有程序”“Microsoft SQL Server”>“配置工具”>“SQL Server 配置管理器”。
启动、停止、暂停、继续或重启 SQL Server 数据库引擎 实例
- 按照上一部分中的说明启动 SQL Server 配置管理器。 
- 如果出现“用户帐户控制”对话框,请选择“是” 。 
- 在 SQL Server 配置管理器的左窗格中,选择“SQL Server 服务”。 
- 在结果窗格中,右键单击“SQL Server (MSSQLServer)”或某个命名实例,然后选择“启动”、“停止”、“暂停”、“继续”或“重启”。 
- 选择“确定”,以关闭 SQL Server 配置管理器。 
若要使用启动选项启动一个数据库引擎实例,请参阅 SQL Server 配置管理器:配置服务器启动选项。
重要
从 SQL Server 2022 (16.x) 开始,在配置管理器中将 SQL Server 服务的“启动模式”设置为“自动”时,服务将改为在“自动(延迟启动)”模式下启动,即使“启动模式”显示为“自动”也是如此。
启动、停止、暂停、继续或重启 SQL Server Browser 或 SQL Server 代理的实例
- 按照上一部分中的说明启动 SQL Server 配置管理器。 
- 如果出现“用户帐户控制”对话框,请选择“是” 。 
- 在 SQL Server 配置管理器的左窗格中,选择“SQL Server 服务”。 
- 在结果窗格中,右键单击命名实例的“SQL Server Browser”或者“SQL Server 代理 (MSSQLServer)”或“SQL Server 代理 (instance_name)”,然后选择“开始”、“停止”、“暂停”、“恢复”或“重启”。 
- 选择“确定”,以关闭 SQL Server 配置管理器。 
注意
SQL Server 代理无法暂停。
SQL Server Management Studio
使用 SQL Server Management Studio 来管理 SQL Server 数据库引擎服务。
启动、停止、暂停、继续或重启 数据库引擎 实例
- 在对象资源管理器中,连接到 数据库引擎 的实例,右键单击要启动的 数据库引擎 的实例,然后选择“启动”、“停止”、“暂停”、“继续”或“重启”。 - 或者,在“已注册的服务器”中,右键单击要启动的 数据库引擎 的实例,指向“服务控制”,然后选择“启动”、“停止”、“暂停”、“继续”或“重启”。 
- 如果出现“用户帐户控制”对话框,请选择“是” 。 
- 系统提示你是否要执行操作时,请选择“是”。 
启动、停止或重启 SQL Server 代理的实例
- 在对象资源管理器中,连接到 数据库引擎 的实例,右键单击“SQL Server 代理”,然后选择“启动”、“停止”或“重启”。 
- 如果出现“用户帐户控制”对话框,请选择“是” 。 
- 系统提示你是否要执行操作时,请选择“是”。 
使用 net 命令的命令提示符窗口
可以使用 Windows net 命令启动、停止或暂停 SQL Server 服务。
启动 数据库引擎 的默认实例
在命令提示符下,输入下列命令之一:
net start "SQL Server (MSSQLSERVER)"
-或-
net start MSSQLSERVER
启动 数据库引擎 的命名实例
在命令提示符下,输入下列命令之一。 将 <instancename> 替换为要管理的实例的名称。
net start "SQL Server (instancename)"
-或-
net start MSSQL$instancename
使用启动选项启动 数据库引擎
将启动选项添加到 net start "SQL Server (MSSQLSERVER)" 语句末尾,用空格分隔。 使用 net start 启动时,启动选项使用正斜杠 (/) 而不是连字符 (-)。
net start "SQL Server (MSSQLSERVER)" /f /m
-或-
net start MSSQLSERVER /f /m
注意
有关启动选项的详细信息,请参阅数据库引擎服务启动选项。
在 SQL Server 的默认实例上启动 SQL Server 代理
在命令提示符下,输入下列命令之一:
net start "SQL Server Agent (MSSQLSERVER)"
-或-
net start SQLSERVERAGENT
在 SQL Server 的命名实例上启动 SQL Server 代理
在命令提示符下,输入下列命令之一。 将 instancename 替换为要管理的实例的名称。
net start "SQL Server Agent (instancename)"
-或-
net start SQLAgent$instancename
有关如何在详细模式下运行 SQL Server 代理进行故障排除的信息,请参阅 sqlagent 应用程序。
启动 SQL Server Browser
在命令提示符下,输入下列命令之一:
net start "SQL Server Browser"
-或-
net start SQLBrowser
在命令提示符窗口中暂停或停止服务
要暂停或停止服务,请通过以下方式修改命令。
- 要暂停服务,请用 net start替换net pause。
- 要停止服务,请用 net start替换net stop。
Transact-SQL
数据库引擎 可以使用 SHUTDOWN 语句停止。
使用 Transact-SQL 停止数据库引擎
- 要等待当前运行的 Transact-SQL 语句和存储过程完成后停止 数据库引擎,请执行以下语句。 - SHUTDOWN;
- 要立即停止数据库引擎,请执行以下语句: - SHUTDOWN WITH NOWAIT;
有关 SHUTDOWN 语句的详细信息,请参阅 SHUTDOWN。
PowerShell
可以使用 PowerShell 来管理 SQL Server 数据库引擎服务。
启动和停止 数据库引擎 服务
- 在 SQL Server PowerShell 命令提示符下,执行以下命令。 使用您的计算机名称替换 - computername。- # Get a reference to the ManagedComputer class. CD SQLSERVER:\SQL\computername $Wmi = (get-item .).ManagedComputer
- 标识要停止或启动的服务。 选取下列行之一。 使用命名实例的名称替换 - instancename。- 获取对 数据库引擎默认实例的引用。 - $DfltInstance = $Wmi.Services['MSSQLSERVER']
- 获取对 数据库引擎命名实例的引用。 - $DfltInstance = $Wmi.Services['MSSQL$instancename']
- 获取对 数据库引擎 默认实例上 SQL Server 代理服务的引用。 - $DfltInstance = $Wmi.Services['SQLSERVERAGENT']
- 获取对 数据库引擎 命名实例上 SQL Server 代理服务的引用。 - $DfltInstance = $Wmi.Services['SQLAGENT$instancename']
- 获取对 SQL Server Browser 服务的引用。 - $DfltInstance = $Wmi.Services['SQLBROWSER']
 
- 完成示例以启动然后停止所选服务。 - # Display the state of the service. $DfltInstance # Start the service. $DfltInstance.Start(); # Wait until the service has time to start. # Refresh the cache. $DfltInstance.Refresh(); # Display the state of the service. $DfltInstance # Stop the service. $DfltInstance.Stop(); # Wait until the service has time to stop. # Refresh the cache. $DfltInstance.Refresh(); # Display the state of the service. $DfltInstance
检查并启用禁用的实例
要确定是否禁用了某个 SQL Server 服务实例,请执行以下步骤:
- 使用启动、停止、暂停、继续和重启 SQL Server 服务部分中的信息确定要检查的服务。 
- 在 SQL Server 配置管理器中,选择“SQL Server 服务”,然后找到你感兴趣的服务。 
- 如果“启动模式”列的值设置为“其他(启动、系统、禁用或未知)”,则通常意味着禁用了相应的服务。 若要启用该服务,请执行以下步骤: - 在“名称”列中,右键单击相应的服务,然后在“服务名称< 属性”窗口中切换到“服务”选项卡。 
- 查看“启动模式”列中的值,并验证它是否设置为“已禁用”。 
- 根据要求将值更改为“手动”或“自动”。 有关详细信息,请参阅SQL Server 配置管理器:配置服务器启动选项。 
 
使用 ServiceController 类
可以使用 ServiceController 类以编程方式来控制 SQL Server 服务或其他任何 Windows 服务。 有关使用 C# 的示例,请参阅 ServiceController 类。
服务启动问题排查
当尝试启动 SQL Server 服务时,如果存在配置问题,它们可能无法启动。 可以查看特定于服务的日志来识别并解决问题。 以下文章提供了针对特定问题的详细故障排除步骤和解决方法: