首页主机资讯Ubuntu上SQL Server的故障排查指南

Ubuntu上SQL Server的故障排查指南

时间2025-11-14 19:22:03发布访客分类主机资讯浏览536
导读:Ubuntu上SQL Server故障排查指南 一 快速定位流程 检查服务状态:运行 sudo systemctl status mssql-server,若未运行则执行 sudo systemctl start mssql-server...

Ubuntu上SQL Server故障排查指南

一 快速定位流程

  • 检查服务状态:运行 sudo systemctl status mssql-server,若未运行则执行 sudo systemctl start mssql-server。
  • 查看引擎日志:优先查看 SQL Server 错误日志,常见路径为 /var/opt/mssql/log/errorlog;也可用 sudo journalctl -u mssql-server -xe 获取更详细的系统级日志。
  • 验证本地连通:使用 sqlcmd 本地连接,例如:sqlcmd -S 127.0.0.1 -U SA -P ‘< YourStrong!Passw0rd> ’ -Q “SELECT 1”。
  • 检查端口监听:确认 1433 端口处于监听,命令:ss -lntp | grep 1433 或 sudo netstat -tulpen | grep 1433。
  • 复核资源与权限:确保磁盘与内存充足,且 SQL Server 目录权限正确。
    以上步骤覆盖了服务、日志、连通、端口与资源的首轮排查要点。

二 常见故障与修复

  • 服务无法启动
    • 查看错误日志定位根因:cat /var/opt/mssql/log/errorlog;必要时用 journalctl -u mssql-server -xe 辅助排查。
    • 资源不足(磁盘/内存)会导致启动失败或异常退出,先释放或扩容,再重启服务。
    • 配置值不当(如内存、文件路径)可阻碍启动,可在“最低配置模式”下修正后重启:
      sudo /opt/mssql/bin/mssql-conf set-sa-password
      sudo /opt/mssql/bin/mssql-conf set network.tcpport 1433
      sudo systemctl restart mssql-server
  • 端口被占用
    • 查找占用进程:ss -lntp | grep 1433 或 sudo lsof -iUDP:1433 -iTCP:1433;必要时 kill -9 释放端口,再重启服务。
  • 连接被拒绝或超时
    • 本机优先用 127.0.0.1 测试,排除 localhost 解析问题;远程连接请确保客户端能解析服务器名或直接使用 IP。
    • 防火墙放行:sudo ufw allow 1433/tcp(或 firewalld/iptables 等效规则)。
    • 核对认证信息(用户名/密码/大小写/空格),确认 SQL Server 已启用混合身份验证。
  • SSL/TLS 握手失败
    • 连接字符串增加加密选项进行验证:encrypt=true; trustServerCertificate=true(仅测试环境建议)。
    • 检查证书是否有效、未过期;必要时重新生成或调整证书配置。
  • 依赖库缺失(安装或启动时报错)
    • 典型如:error while loading shared libraries: liblber-2.4.so.2 或 libssl1.1,使用 apt 安装对应包(如 libldap-2.4-2、libssl1.1),再重启服务。
  • Docker 场景
    • 确认 Docker 运行,拉取镜像:docker pull mcr.microsoft.com/mssql/server:2022-latest;
    • 启动容器时确保环境变量 ACCEPT_EULA=YMSSQL_SA_PASSWORD 合规,且主机端口映射正确:-p 1433:1433。
      以上为高频故障的处置要点与命令示例。

三 日志与诊断命令清单

  • 服务与系统日志:
    • sudo systemctl status mssql-server --no-pager
    • sudo journalctl -u mssql-server -xe
  • SQL Server 引擎日志:
    • tail -f /var/opt/mssql/log/errorlog
    • grep -i “error|fail|exception” /var/opt/mssql/log/errorlog
  • 端口与进程:
    • ss -lntp | grep 1433
    • sudo lsof -i :1433
  • 资源与健康:
    • df -h(确保可用空间≥2GB
    • free -h(确保可用内存≥2GB
    • top/htop/vmstat/iostat 观察 CPU、内存、I/O 瓶颈
  • 配置与连通性验证:
    • 查看/调整内存:sudo sqlcmd -Q “EXEC sp_configure ‘max memory’, 4096; RECONFIGURE; ”
    • 本地连通:sqlcmd -S 127.0.0.1 -U SA -P ‘’ -Q “SELECT @@VERSION”
      这些命令覆盖了日志、端口、资源、配置与连通性的常用诊断路径。

四 性能与高可用排查

  • 资源瓶颈定位:结合 top/htop、vmstat、iostat、netstat 识别 CPU、内存、磁盘 I/O 与网络异常。
  • 查询与执行计划:利用 SSMS 的 SQL Server Profiler数据库引擎优化顾问 抓取与优化慢查询。
  • 可用性组延迟观测(如部署 AG):
    • SELECT
      ar.replica_server_name,
      ar.availability_mode_desc,
      DB_NAME(dbr.database_id) AS db,
      dbr.synchronization_state_desc,
      ISNULL(CASE dbr.redo_rate WHEN 0 THEN -1 ELSE CAST(dbr.redo_queue_size AS FLOAT)/dbr.redo_rate END, -1) AS redo_latency_sec,
      ISNULL(CASE dbr.log_send_rate WHEN 0 THEN -1 ELSE CAST(dbr.log_send_queue_size AS FLOAT)/dbr.log_send_rate END, -1) AS log_send_latency_sec,
      dbr.redo_queue_size, dbr.redo_rate, dbr.log_send_queue_size, dbr.log_send_rate
      FROM master.sys.availability_replicas AS ar
      JOIN master.sys.dm_hadr_database_replica_states AS dbr
      ON ar.replica_id = dbr.replica_id AND ar.group_id = dbr.group_id;
      该脚本有助于快速判断 Redo 延迟Log 传送延迟,定位网络与重做瓶颈。

五 实践建议

  • 变更前备份关键配置与数据;修改内存/端口等参数后务必重启服务并复核日志。
  • 生产环境避免使用 trustServerCertificate=true,正确部署与轮换 TLS 证书。
  • 保持 SQL Server 与驱动(如 ODBC)版本更新,及时修复已知缺陷。
  • 若所有排查无果,保留错误日志、core dump 与复现步骤,向社区或厂商支持提交工单。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Ubuntu上SQL Server的故障排查指南
本文地址: https://pptw.com/jishu/748323.html
SQL Server在Ubuntu上的版本升级策略 Debian FTPServer端口如何设置

游客 回复需填写必要信息