启动、停止、暂停、继续和重启 SQL Server 服务
适用于: 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 代理以执行故障排除的信息,请参阅 sqlagent90 应用程序。
启动 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 服务时,如果存在配置问题,它们可能无法启动。 可以查看特定于服务的日志来识别并解决问题。 以下文章提供了针对特定问题的详细故障排除步骤和解决方法: