Debian上SQL Server的故障排查指南
导读:Debian上SQL Server故障排查指南 一 快速定位流程 检查服务状态:运行 sudo systemctl status mssql-server,确认服务为 active (running 。若未运行,执行 sudo syste...
Debian上SQL Server故障排查指南
一 快速定位流程
- 检查服务状态:运行 sudo systemctl status mssql-server,确认服务为 active (running)。若未运行,执行 sudo systemctl start mssql-server 并观察状态输出中的错误提示。
- 查看系统日志:使用 tail -f /var/log/syslog、journalctl -u mssql-server 或 dmesg 捕捉启动失败、权限、依赖、OOM 等线索。
- 查看 SQL Server 错误日志:定位引擎启动失败、登录认证、配置错误等,日志位于 /var/opt/mssql/log/errorlog(常见误写为 /var/log/mssql/errorlog)。
- 验证本地连通:用 sqlcmd 本地直连测试账户与实例可用性,命令示例:sqlcmd -S localhost -U SA -P ‘’。
- 复核资源与磁盘:执行 df -h、free -m、top/htop,排除磁盘满、内存紧张、CPU 飙升等基础瓶颈。
- 远程连通性:确认防火墙放行 1433/TCP,并在本机或网关测试端口连通(如 nc -vz 1433)。
- 变更后重启并复测:sudo systemctl restart mssql-server,再次验证服务与连接。
二 常见故障与修复
- 服务无法启动
- 典型原因:配置错误、依赖缺失、端口被占用、磁盘满、内存不足。
- 处理要点:
- 查看 /var/opt/mssql/log/errorlog 首屏报错,优先处理“Failed to start”类错误。
- 用 journalctl -xeu mssql-server 获取更详细的 systemd 失败原因。
- 复核磁盘与内存:df -h、free -m;必要时清理或扩容。
- 检查端口占用:ss -lntp | grep 1433 或 netstat -an | grep 1433,释放冲突进程后重启服务。
- 本地或远程连接失败
- 本地失败:用 sqlcmd -S localhost -U SA 验证 SA 与实例可用性;若提示登录失败,重置 SA 密码:sudo /opt/mssql/bin/mssql-conf set-sa-password。
- 远程失败:
- 防火墙放行:sudo ufw allow 1433/tcp(如使用 ufw);确保云安全组/边界防火墙同样放行。
- 确认监听端口:默认 1433/TCP,必要时在 mssql-conf 中设置并重启。
- 客户端指定主机名或 IP:sqlcmd -S < IP或FQDN> ,1433 -U SA -P ‘’。
- 身份验证与权限问题
- 确保 SA 密码符合强度要求并已正确设置;应用连接字符串中的用户名与密码无误。
- 如需使用 Windows 身份验证(AD 集成),需完成 Linux 端的 AD/Kerberos 加入与凭据委派配置,否则仅能使用 SQL 身份验证。
- 依赖与驱动问题(客户端/应用侧)
- 驱动加载错误时,确认驱动库(如 sqlsrv.so)路径正确,并使用 ldd sqlsrv.so 检查依赖是否缺失;必要时安装对应运行库。
- SQL Server 代理无法启动
- 常见为权限或服务账户配置不当;确保以具备 sysadmin 权限的账户运行代理,并在 mssql-conf 或 SSMS 中完成代理启用与账户设置。
三 日志与性能诊断
- 日志查看与追踪
- 系统层面:tail -f /var/log/syslog、journalctl -u mssql-server -f、dmesg -T。
- 引擎层面:tail -n 200 /var/opt/mssql/log/errorlog | less,关注启动、登录、配置变更、备份还原、扩展事件等记录。
- 性能与阻塞定位
- 使用 SSMS 的“性能监视器”、SQL Server Profiler 捕获与分析事件(如慢查询、阻塞链)。
- 查询 DMV 获取实时状态:
- 连接与会话:sys.dm_exec_connections、sys.dm_exec_sessions
- 正在执行的请求与等待:sys.dm_exec_requests(结合 sys.dm_exec_sql_text 查看 SQL 文本)
- 内存压力与分配:sys.dm_os_memory_clerks、DBCC MEMORYSTATUS(在 Linux 上可用,但更推荐 DMV)
- 资源瓶颈排查
- CPU/内存/IO:top/htop、vmstat、iostat、free -m、df -h,定位高占用进程与资源不足。
- 针对高 CPU、内存压力、磁盘 I/O 瓶颈,优先优化查询与索引、调整 max server memory、减少并发冲突与锁等待。
四 常用命令清单
| 目标 | 命令示例 |
|---|---|
| 服务状态 | sudo systemctl status mssql-server |
| 启动/重启服务 | sudo systemctl start |
| 查看系统日志 | tail -f /var/log/syslog;journalctl -u mssql-server -f |
| 查看引擎错误日志 | tail -n 200 /var/opt/mssql/log/errorlog |
| 本地连接测试 | sqlcmd -S localhost -U SA -P ‘’ |
| 远程连接测试 | sqlcmd -S < IP或FQDN> ,1433 -U SA -P ‘’ |
| 防火墙放行 | sudo ufw allow 1433/tcp |
| 端口占用检查 | ss -lntp |
| 资源与磁盘 | df -h;free -m;top/htop |
| 重置 SA 密码 | sudo /opt/mssql/bin/mssql-conf set-sa-password |
| 依赖检查(驱动) | ldd sqlsrv.so |
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Debian上SQL Server的故障排查指南
本文地址: https://pptw.com/jishu/782253.html
