温馨提示×

Ubuntu SQL Server常见问题及解决

小樊
42
2025-12-08 05:13:35
栏目: 云计算

Ubuntu 上 SQL Server 常见问题与解决

一 安装与依赖问题

  • 导入 GPG 密钥与注册仓库(以 Ubuntu 20.04 + SQL Server 2022 为例):
    • 导入密钥:wget -qO- https://packages.microsoft.com/keys/microsoft.asc | sudo tee /etc/apt/trusted.gpg.d/microsoft.asc
    • 注册仓库:sudo add-apt-repository “$(wget -qO- https://packages.microsoft.com/config/ubuntu/20.04/mssql-server-2022.list)”
    • 安装与初始化:sudo apt-get update && sudo apt-get install -y mssql-server && sudo /opt/mssql/bin/mssql-conf setup
  • 依赖库缺失(典型报错:error while loading shared libraries: …)
    • libldap-2.4-2:sudo apt-get install -y libldap-2.4-2
    • libssl1.1(如 Ubuntu 18.04 上常见):sudo apt-get install -y libssl1.1
  • 版本兼容与仓库匹配:确保 SQL Server 版本Ubuntu 版本匹配(如 SQL Server 2022 支持 Ubuntu 20.04),并使用对应仓库配置。

二 服务无法启动与日志定位

  • 检查服务状态:systemctl status mssql-server --no-pager
  • 查看错误日志(两种常见路径,取决于安装与版本):
    • /var/opt/mssql/log/errorlog(较新安装常见)
    • /var/log/mssql/errorlog 或 /var/log/sqlserver/errorlog(旧版或特定环境)
  • 常见根因与处理:
    • 资源不足(内存/磁盘/CPU):释放或扩容资源后重启服务
    • 权限问题:校正安装目录与服务账户权限
    • 配置错误:使用 mssql-conf 修正后重启:sudo /opt/mssql/bin/mssql-conf setup && sudo systemctl restart mssql-server
    • 证书相关:日志出现证书错误时,重新生成或正确配置证书后再启动

三 连接失败与网络配置

  • 本机与远程连通性检查:
    • 监听端口:sudo ss -lntp | grep 1433(默认端口 1433
    • 防火墙放行:sudo ufw allow 1433/tcp(或对应防火墙策略)
  • 客户端连接与工具:
    • sqlcmd 连接示例:sqlcmd -S <IP或主机名>,1433 -U SA -P ‘<密码>’
    • 命令行工具安装:sudo apt-get install -y mssql-tools unixodbc-dev
  • 常见报错与处理:
    • “Connection forcibly closed”:排查网络稳定性、端口连通性、TLS/证书配置
    • “未找到或无法访问服务器”:核对实例名、远程连接是否启用、端口与防火墙策略

四 SSL 与加密连接问题

  • 驱动/应用侧 TLS 版本不匹配:在客户端(如 Java)禁用不安全协议/算法,示例:
    • 创建 custom.java.security:jdk.tls.disabledAlgorithms=SSLv3,TLSv1.1,RC4,DES,MD5withRSA,DH keySize < 1024,EC keySize < 224,3DES_EDE_CBC,anon,NULL
    • 启动时指定:java -Djava.security.properties=/path/to/custom.java.security …
  • 服务器端启用加密连接:
    • 连接字符串增加:encrypt=true
    • 测试/自签名场景可临时:trustServerCertificate=true(生产环境不建议)
  • 证书问题导致服务无法启动:依据错误日志重新生成或配置有效证书,再重启服务

五 性能与运维最佳实践

  • 查询与存储过程优化:
    • 避免使用 SELECT *;减少 JOIN 数量;优先集合操作替代游标
    • 使用 SET NOCOUNT ON;用 sp_executesql 替代 EXEC 以复用执行计划
    • 事务尽量短;避免在标量函数中对列逐行计算
  • 配置与维护:
    • 启用 SQL Server 代理执行备份/维护作业
    • 定期重建索引、更新统计信息,监控关键性能指标
  • 安全与高可用:
    • 设置强密码策略;仅开放必要端口(如 1433
    • 定期备份并验证可恢复性;按官方文档进行版本与平台兼容性验证

0