启动SQL服务器提示请求失败,先别急着重装,打开事件查看器记录错误码,核对SQL Server服务的登录账户与依赖服务,多数问题在依赖服务未启动、账户缺少“作为服务登录”权限或TCP/IP协议未启用。
启动SQL服务器提示请求失败怎么办?先分清“请求失败”发生在哪一层
你在services.msc里右键启动SQL Server服务,弹窗只给一句“请求失败”,这个提示本身很笼统,它通常由Windows服务控制管理器抛出,真正原因要回到事件查看器和SQL Server错误日志里找,先按下面顺序抓现场信息,别急着改配置。
服务控制管理器报“请求失败”时,到底该看哪几个位置
- 打开事件查看器:
eventvwr.msc→ Windows日志 → 应用程序,筛选来源MSSQLSERVER或SQLSERVERAGENT,重点看启动时间点附近的错误记录。 - 查看SQL Server错误日志:默认在实例的
MSSQL\Log目录下,找ERRORLOG文件,末尾几行常会写明“Access is denied”或依赖服务不可用。 - 回到服务属性:
services.msc→ 找到SQL Server (MSSQLSERVER)→ 右键属性 → “登录”选项卡,确认服务账户是本地系统账户、虚拟账户还是域账户。 - 用命令行复现一次:管理员命令行执行
net start MSSQLSERVER,观察返回的错误码,比弹窗信息更具体。
用一张表对应错误码和检查方向
| 错误码/现象 | 典型含义 | 优先检查方向 |
|---|---|---|
| 错误1067 | 进程意外终止 | 依赖服务、master数据库、服务账户权限 |
| 错误5 | 拒绝访问 | 服务账户、数据目录ACL、文件系统权限 |
| 错误1053 | 服务未及时响应启动或控制请求 | 依赖服务超时、实例启动参数、系统资源 |
| 错误1722 | RPC服务器不可用 | RPC服务、网络依赖、远程过程调用配置 |
据统计,SQL Server服务启动失败报错中,错误1067和错误5出现频率较高,先拿到错误码,再决定往依赖服务、权限还是协议配置方向排查。
SQL Server服务启动报错请求失败,错误1067的典型处理路径
错误1067在Windows服务里很常见,对SQL Server来说,它往往不是单一原因,而是“启动过程中某个依赖环节断了”,下面按依赖服务、账户权限、协议端口三个层面拆开看。
依赖服务没起来,SQL Server就会卡在启动阶段
- 在服务属性 → “依赖关系”选项卡里查看
SQL Server (MSSQLSERVER)依赖哪些服务,常见包括Remote Procedure Call (RPC)、Windows Management Instrumentation、SQL Server Browser等。 - 用命令行查看依赖:
sc qc MSSQLSERVER,看DEPEND_ON列表。 - 逐个启动依赖服务:
net start "SQL Server Browser"、net start "Windows Management Instrumentation",具体服务名按你机器上的显示名称调整。 - 如果依赖服务自身启动失败,先解决依赖服务,再回来启动SQL Server。
服务账户权限不足会表现为错误5或1067
服务账户是启动SQL Server的“身份”,身份权限不够,进程会在初始化阶段被拦下。
- 在服务属性 → “登录”选项卡确认账户,临时测试可切换到
Local System,启动成功后改回原账户,别长期用本地系统账户跑生产实例。 - 如果用域账户或本地非管理员账户,检查本地安全策略:
secpol.msc→ 本地策略 → 用户权限分配 → “作为服务登录”,把该账户加进去。 - 检查数据目录和日志目录权限,默认实例的数据文件常在
C:\Program Files\Microsoft SQL Server\MSSQL15.MSSQLSERVER\MSSQL\DATA,版本号按实际环境变化,可用icacls查看ACL,再按服务账户授予“完全控制”。 - 用
net start MSSQLSERVER再试一次,若事件查看器里出现“Access is denied”,优先回到账户和目录权限。
TCP/IP协议未启用与端口占用如何验证
- 打开SQL Server配置管理器 → SQL Server网络配置 →
MSSQLSERVER的协议 → 确认TCP/IP状态为“已启用”,修改后重启SQL Server服务。 - 检查端口占用:
netstat -ano | findstr :1433,看是否有非SQL Server进程占用1433。 - 检查防火墙规则是否放行SQL Server实例端口,本地开发环境也别忽略第三方安全软件的拦截。
本地SQL服务器启动请求失败与账户权限有关吗?
有关,但不能一概而论,本地开发环境常用默认实例和虚拟账户NT SERVICE\MSSQLSERVER,这类账户的权限通常随服务名自动配置,手动改成不存在的账户名反而会制造错误5,若你把服务账户改成域账户、本地普通账户,或者从别的机器迁移了数据目录,权限问题就很容易冒出来。
- 先看错误日志里有没有“Access is denied”或“Login failed”字样。
- 检查“作为服务登录”权限,域账户还要确认账户未被锁定。
- 检查数据目录、日志目录、备份目录的ACL,迁移过的目录尤其容易丢权限。
- 用
whoami /priv和icacls辅助判断,但不要在未备份时批量改权限。
行业共识认为,SQL Server启动失败中相当一部分与依赖服务未启动或服务账户权限不足有关,先做低风险验证,再动系统配置。
启动失败请求失败怎么解决:单用户模式与最小配置排查
常规排查做完仍失败,可以进入更底层的启动方式,让实例输出更明确的错误信息。
用最小配置启动,看日志有没有更明确的报错
- 停止服务:
net stop MSSQLSERVER。 - 进入实例的
Binn目录,管理员命令行执行sqlservr.exe -f,以最小配置启动。 - 若最小配置能启动,说明问题更可能出在某个配置项或数据库文件,不在账户权限本身。
- 需要修复系统数据库时,可用单用户模式:
sqlservr.exe -m,注意这会占用控制台,操作前备份master、model、msdb。
修复后别忘了检查SQL Server Browser与VSS Writer
- 命名实例或使用动态端口时,
SQL Server Browser服务未启动会影响客户端连接,但不一定阻止数据库引擎启动。 SQL Server VSS Writer与备份相关,启动失败时日志里也会留痕,按需检查。- 每次改完服务账户或协议配置,重启实例并回看事件查看器,确认没有新的错误码。
把排查顺序固定为看错误码、查依赖服务、核账户权限、验协议端口,启动SQL服务器提示请求失败通常能定位到具体环节,重装系统或反复重启实例并不是首选动作。
启动SQL服务器提示请求失败怎么办?常见问答
Q:启动SQL服务器提示请求失败,先看事件查看器还是先改服务账户?
A:先看事件查看器和SQL Server错误日志,错误码会指向依赖服务、权限还是协议配置,盲目改账户容易把可恢复问题复杂化。
Q:SQL服务器启动失败请求失败怎么解决时,需要直接重装SQL Server吗?
A:多数情况下不需要,按依赖服务、账户权限、TCP/IP协议、最小配置启动的顺序处理,相当一部分启动失败能在不重装的前提下恢复,只有系统数据库损坏且无可用备份时,才考虑修复或重建系统数据库。
Q:本地SQL服务器启动请求失败与账户权限有关吗?
A:有关,尤其是把服务账户改成域账户或本地非管理员账户后,检查“作为服务登录”权限、数据目录ACL和错误日志中的“Access is denied”记录,若使用虚拟账户NT SERVICE\MSSQLSERVER,权限通常随服务名自动配置,不要手动改成不存在的账户名。
首发原创文章,作者:王坚,如若转载,请注明出处:https://idctop.com/article/786211.html


