怎么读 SQL Server 错误日志定位服务故障?
SQL Server 错误日志(ERRORLOG)的位置、用 T-SQL 读取的命令,以及从日志行里提炼服务故障根因的方法。
简短答案
错误日志是引擎自己的第一手记录,位置在实例数据目录下的 ERRORLOG(无扩展名),引擎正常时在 SSMS 里也能用 T-SQL 直接读。服务起不来时直接打开文件;读法是从故障时间点倒着往上翻,找最后一段报错。
日志位置与读取
-- 引擎正常时:看当前日志
EXEC xp_readerrorlog;
-- 看上一个滚动日志(第 1 份历史)
EXEC xp_readerrorlog 1;
- 文件路径:
<数据目录>\ERRORLOG、ERRORLOG.1……数字越大越旧。 - 数据目录默认
C:\Program Files\Microsoft SQL Server\<版本号>\MSSQL.<实例>\MSSQL\DATA\,多实例各有一份。 - 引擎起不来时 SSMS 连不上,直接用文本编辑器打开文件,定位时间点对应段落。
读日志的定位方法
- 锁定时间窗:服务失败的时间点往前找 30–60 行。
- 认关键字:
Cannot open file(文件缺失)、Login failed(认证问题)、port/bind(端口冲突)、tempdb(临时库问题)、license(授权状态告警,非致命)。 - 区分致命与告警:启动段落里的错误才是要害,运行期的告警(如许可证剩余天数提示)先记着不慌。
- 根因修完后重启服务,再看日志是否干净启动。
日志会滚动(旧日志编号 +1),故障分析要尽快做,避免证据被冲掉;多实例机器上注意看的是目标实例那份日志,别串实例。
操作小结
- 位置:实例数据目录 ERRORLOG,按编号从新到旧。
- 读法:故障时间点倒翻,认关键字。
- 各版本日志位置规则一致,见 SQL Server 2022 Developer、SQL Server 2025 Developer 条目页。