确认SQL Server服务是否正在运行是排查故障的第一步。使用以下命令查看服务状态:
sudo systemctl status mssql-server --no-pager
若服务未运行(显示为inactive),可通过以下命令启动:
sudo systemctl start mssql-server
若需设置开机自启,可执行:
sudo systemctl enable mssql-server
错误日志包含详细的故障信息(如启动失败、连接错误、查询异常),是定位问题的关键。SQL Server的错误日志默认位于:
/var/opt/mssql/log/errorlog
使用以下命令实时查看日志末尾内容(适用于实时监控):
sudo tail -f /var/opt/mssql/log/errorlog
或查看完整日志文件:
sudo cat /var/opt/mssql/log/errorlog
SQL Server运行需要足够的CPU、内存和磁盘空间。若资源不足,可能导致服务崩溃或性能下降:
df -h命令查看磁盘使用情况,确保/var/opt/mssql分区(SQL Server数据目录)至少有2GB可用空间。free -h命令查看内存使用情况,确保至少有2GB可用内存(SQL Server默认会占用较多内存)。top或htop命令查看CPU占用率,若长期超过80%,可能需要优化查询或升级硬件。SQL Server默认使用1433端口(TCP),若端口被占用或防火墙未开放,会导致客户端无法连接:
netstat或ss命令查看1433端口是否被占用:sudo netstat -tuln | grep 1433
若端口被占用,可通过lsof命令找出占用进程并终止(替换<PID>为实际进程ID):sudo lsof -i :1433
sudo kill -9 <PID>
ufw防火墙,执行以下命令开放1433端口:sudo ufw allow 1433/tcp
sudo ufw reload
错误的配置参数(如内存限制、最大并行度)可能导致性能问题或服务异常。使用mssql-conf工具查看或修改配置:
sudo /opt/mssql/bin/mssql-conf list | grep memory
sudo /opt/mssql/bin/mssql-conf set memory.maxmemory 4096
修改配置后,需重启服务使更改生效:sudo systemctl restart mssql-server
若客户端无法连接到SQL Server,需检查以下方面:
localhost:localhost可能未正确映射到服务器地址,建议使用服务器IP地址(如192.168.1.100)连接。sa)和密码正确,注意大小写和特殊字符。ping命令检查客户端与服务器之间的网络连接:ping <服务器IP地址>
安装SQL Server时,可能会因缺少依赖库(如libldap-2.4-2、libssl1.1)导致失败。常见解决方法:
libldap-2.4-2(适用于Ubuntu 20.04及以上版本):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 update
sudo apt-get install -y mssql-server
若SQL Server运行缓慢,需通过以下工具分析性能问题:
top、htop查看CPU、内存使用情况;使用iostat(需安装sysstat包)查看磁盘I/O性能。sqlcmd执行查询分析慢查询(如SET STATISTICS TIME ON查看查询执行时间);使用扩展事件(CREATE EVENT SESSION)捕获详细性能数据。ALTER INDEX ... REBUILD)、清理表碎片、优化查询语句(避免SELECT *、合理使用索引)。系统日志(journalctl)包含SQL Server服务启动、停止及系统级错误信息,有助于排查与服务相关的系统问题:
journalctl
journalctl -u mssql-server
grep命令查找error关键字:journalctl -u mssql-server | grep -i error
若SQL Server服务异常崩溃,系统会生成故障转储文件(位于/var/opt/mssql/log目录),包含崩溃时的内存信息,可用于深入分析崩溃原因:
ls命令列出转储文件(扩展名为.mdmp或.tar.gz2):ls /var/opt/mssql/log
Debug Diagnostic Tool或WinDbg工具(适用于Windows环境),或联系微软技术支持获取帮助。通过以上步骤,可覆盖SQL Server在Ubuntu上的常见故障场景(服务异常、连接问题、性能瓶颈等)。若问题仍未解决,建议参考SQL Server官方文档或社区论坛(如Stack Overflow)获取进一步支持。