温馨提示×

Ubuntu上SQL Server的故障排查

小樊
45
2025-11-08 13:10:34
栏目: 云计算

Ubuntu上SQL Server故障排查指南

1. 服务状态检查

首先确认SQL Server服务是否正在运行,使用以下命令查看服务状态:

sudo systemctl status mssql-server --no-pager

如果服务未启动,启动服务并设置开机自启:

sudo systemctl start mssql-server
sudo systemctl enable mssql-server

若服务启动失败,需结合日志进一步分析(见查看日志文件部分)。

2. 查看日志文件

SQL Server的错误日志是故障排查的核心依据,默认路径为/var/opt/mssql/log/errorlog。使用以下命令实时查看最新日志:

sudo tail -f /var/opt/mssql/log/errorlog

日志中会记录服务启动失败、连接错误、查询异常等关键信息,帮助快速定位问题根源。

3. 端口与防火墙检查

SQL Server默认使用1433端口,需确保端口未被占用且防火墙允许通信:

  • 检查端口占用
    sudo netstat -tuln | grep 1433
    
    若端口被占用,通过sudo lsof -i :1433找到占用进程并终止(sudo kill -9 <PID>)。
  • 开放防火墙端口(若使用ufw):
    sudo ufw allow 1433/tcp
    sudo ufw reload
    
  • 验证连接:从客户端使用telnet <服务器IP> 1433测试端口连通性。

4. 系统资源监控

SQL Server运行需要足够的系统资源,资源不足会导致服务崩溃或性能下降:

  • 检查磁盘空间
    df -h
    
    确保根分区(/)至少有2GB可用空间(SQL Server最低要求)。
  • 检查内存使用
    free -h
    
    确保有2GB以上可用内存(SQL Server默认会占用较多内存)。
  • 监控实时资源:使用tophtop命令查看CPU、内存占用情况,找出占用过高的进程。

5. 常见错误解决方案

5.1 依赖库缺失

安装过程中若出现error while loading shared libraries错误(如liblber-2.4.so.2libssl1.1),需手动安装缺失的库:

# 安装libldap-2.4-2(解决liblber错误)
wget https://community-packages.deepin.com/deepin/pool/main/o/openldap/libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64.deb
sudo dpkg -i libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64.deb

# 安装libssl1.1(解决SSL相关错误)
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb
sudo dpkg -i libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb

安装后运行sudo apt-get install -f修复依赖关系。

5.2 SA密码不符合要求

设置SA密码时,需满足以下条件:

  • 至少8个字符;
  • 包含大写字母、小写字母、数字和特殊符号。
    若密码不符合要求,mssql-conf setup会提示错误,需重新设置密码。

5.3 数据库损坏

若数据库出现损坏(如DBCC CHECKDB报错),可使用以下命令修复:

  • 检查数据库完整性
    USE master;
    GO
    DBCC CHECKDB('数据库名') WITH NO_INFOMSGS, ALL_ERRORMSGS;
    
  • 修复表错误(需单用户模式):
    USE 数据库名;
    GO
    EXEC sp_dboption '数据库名', 'single user', 'true';
    GO
    DBCC CHECKTABLE('表名', REPAIR_ALLOW_DATA_LOSS);
    DBCC CHECKTABLE('表名', REPAIR_REBUILD);
    GO
    EXEC sp_dboption '数据库名', 'single user', 'false';
    GO
    
    注意REPAIR_ALLOW_DATA_LOSS可能导致数据丢失,需提前备份。

6. 性能优化工具

  • 查询慢优化:使用sqlcmd运行SET SHOWPLAN_ALL ON分析查询执行计划,找出低效SQL;或使用SQL Server Profiler(通过Wine在Linux上运行)追踪查询。
  • 系统性能监控:使用iostat监控磁盘I/O,vmstat监控内存和CPU使用,netstat监控网络连接,识别性能瓶颈。

7. 其他常见问题

  • 连接异常:若使用localhost无法连接,尝试改用127.0.0.1;确保SQL Server配置为允许远程连接(通过mssql-conf设置)。
  • 证书问题:若出现SSL连接错误,创建custom.java.security文件(路径:/etc/sqlserver/java.security),内容为:
    jdk.tls.disabledAlgorithms=SSLv3, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves
    
    并在连接时添加encrypt=true;trustServerCertificate=true参数。

0