Ubuntu 上 SQL Server 故障排查清单
一 快速定位流程
- 检查服务状态:运行 sudo systemctl status mssql-server;若未运行,执行 sudo systemctl start mssql-server,并建议启用开机自启 sudo systemctl enable mssql-server。
- 查看引擎日志:tail -f /var/opt/mssql/log/errorlog,优先从日志第一行致命错误入手。
- 查看系统日志:journalctl -xeu mssql-server,获取服务启动/崩溃的上下文。
- 验证本地连通:sqlcmd -S localhost -U SA -P ‘<your_password>’,能连上说明引擎与本地协议栈基本正常。
- 检查端口监听:ss -lntp | grep 1433 或 netstat -tulpen | grep 1433,确认 1433 处于监听。
- 校验防火墙:sudo ufw status;如需开放端口,执行 sudo ufw allow 1433/tcp。
- 远程连通性:从客户端测试 telnet <server_ip> 1433 或 nc -vz <server_ip> 1433;必要时抓包或路由跟踪。
- 变更后重启:sudo systemctl restart mssql-server 使配置生效。
二 常见故障与修复
- 服务无法启动
- 查错误日志 /var/opt/mssql/log/errorlog 与 journalctl -xeu mssql-server 定位根因。
- 检查资源:free -h、df -h、top,确保内存、磁盘空间充足。
- 若配置变更导致异常,使用 sudo /opt/mssql/bin/mssql-conf setup 重新配置,再重启服务。
- 本地或远程连接失败
- 确认服务运行、端口监听与防火墙放行(见上)。
- 用 sqlcmd 指定 IP 直连:sqlcmd -S <server_ip>,1433 -U SA -P ‘’;如仅本机能连,远程不通,多为网络/防火墙/监听地址问题。
- 客户端依赖:sudo apt-get update && sudo apt-get install -y mssql-tools unixodbc-dev。
- 证书/加密:若报 SSL 握手失败,检查服务器证书有效性与 TLS 配置;容器/旧环境可酌情降低 TLS 最低版本(仅测试环境)。
- 权限与认证问题
- 确保使用正确的 SA 密码或具备登录权限的域/本地账户;注意密码复杂度与账户锁定策略。
- 远程登录被拒通常与登录名、默认数据库、权限或连接字符串错误有关,逐项核对主机、端口、库名、凭据。
- 性能与异常
- 监控资源:top/htop、vmstat、iostat;关注长事务、阻塞、死锁与连接数激增。
- 用 DMV 快速体检:
- 连接与会话:SELECT * FROM sys.dm_exec_sessions;
- 当前请求与等待:SELECT * FROM sys.dm_exec_requests;
- 最近错误:SELECT * FROM sys.dm_os_ring_buffers WHERE ring_buffer_type = N’RING_BUFFER_EXCEPTION’;
- 安装/依赖与版本兼容
- 依赖缺失(如共享库)按报错安装对应包;确保 SQL Server 版本与 Ubuntu 版本兼容。
三 关键配置与日志路径
- 服务与工具
- 服务名:mssql-server;启动/重启:sudo systemctl start|restart mssql-server。
- 客户端:sudo apt-get install -y mssql-tools unixodbc-dev;连接示例:sqlcmd -S <host_or_ip>[,1433] -U -P 。
- 配置文件
- 主配置:/etc/opt/mssql/mssql.conf;修改后用 sudo systemctl restart mssql-server 生效。
- 重新配置工具:sudo /opt/mssql/bin/mssql-conf(如 setup、set 等子命令)。
- 日志与转储
- 引擎错误日志:/var/opt/mssql/log/errorlog(排查首选)。
- 系统日志:journalctl -xeu mssql-server(服务层事件)。
- 故障转储:/var/opt/mssql/log 下的 .mdmp(小型转储)与 .tar.gz2(core 转储)。
四 一键排查命令清单
- 服务与自启:
- systemctl status mssql-server
- systemctl start mssql-server && systemctl enable mssql-server
- 日志与系统日志:
- tail -n50 -f /var/opt/mssql/log/errorlog
- journalctl -xeu mssql-server
- 资源与磁盘:
- 端口与防火墙:
- ss -lntp | grep 1433
- ufw status && ufw allow 1433/tcp
- 本地/远程连通:
- sqlcmd -S localhost -U SA -P ‘’
- sqlcmd -S <server_ip>,1433 -U -P ‘’
- nc -vz <server_ip> 1433
- 客户端依赖:
- apt-get update && apt-get install -y mssql-tools unixodbc-dev
- 配置与重启:
- /opt/mssql/bin/mssql-conf list 或 sudo /opt/mssql/bin/mssql-conf setup
- systemctl restart mssql-server