温馨提示×

Ubuntu环境下SQL Server的故障排查

小樊
36
2025-12-27 21:03:50
栏目: 云计算

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
  • 资源与磁盘:
    • free -h && df -h && top
  • 端口与防火墙:
    • 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

0