首先确认SQL Server服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mssql-server
若服务未启动,可通过以下命令启动并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
此步骤可快速排除服务未启动导致的连接或运行问题。
日志是定位故障的关键,SQL Server的主要错误日志路径为:
/var/opt/mssql/log/errorlog
使用以下命令实时查看日志(重点关注“ERROR”“FAILED”等关键词):
sudo tail -f /var/opt/mssql/log/errorlog
此外,系统日志(journalctl)也能提供内核或系统级的错误线索:
sudo journalctl -u mssql-server -b # 查看SQL Server服务的系统日志
通过日志可快速定位启动失败、连接异常等问题的具体原因。
SQL Server默认使用1433端口,需确保端口未被占用且防火墙允许通信:
sudo netstat -tulnp | grep mssql
若端口被占用,可通过lsof找出占用进程并终止:sudo lsof -i :1433
sudo kill -9 <PID>
ufw):sudo ufw allow 1433/tcp
此步骤可解决“无法连接”“连接超时”等网络相关问题。
资源不足(内存、磁盘空间、CPU)会导致SQL Server运行缓慢或崩溃,使用以下命令检查资源使用情况:
df -h # 检查各分区剩余空间(确保至少2GB可用)
du -sh /var/opt/mssql # 检查SQL Server数据目录大小
free -h # 检查内存剩余量(建议预留2GB以上)
top # 实时查看CPU、内存占用(重点关注mssql进程)
资源瓶颈需通过扩容硬件或优化SQL Server配置(如调整max memory参数)解决。
SQL Server的主配置文件路径为:
/etc/opt/mssql/mssql.conf
需检查以下关键配置项是否正确:
network.port):默认1433,若修改需同步调整防火墙。memory.memorylimitmb):建议设置为物理内存的70%-80%。filelocation.defaultdatadir、filelocation.defaultlogdir):确保目录存在且有正确权限。sudo systemctl restart mssql-server
配置错误(如路径不存在、权限不足)会导致服务启动失败。
若无法通过客户端(如sqlcmd、SSMS)连接,需检查以下内容:
sqlcmd测试本地连接:sqlcmd -S localhost -U SA -P your_password
若本地连接失败,可能是服务未启动或端口问题;若本地成功但远程失败,需检查防火墙、网络连通性(ping、traceroute)及SQL Server是否允许远程连接(通过配置管理器开启TCP/IP协议)。SA)未被锁定,密码正确(注意大小写敏感)。error while loading shared libraries(如liblber-2.4.so.2、libssl1.1),需手动安装缺失的库:sudo apt-get update
sudo apt-get install libldap-2.4-2 libssl1.1
若出现查询缓慢、系统负载高,可使用以下工具排查:
SELECT * FROM sys.dm_exec_requests WHERE status = 'running'; -- 查看正在执行的请求
SELECT * FROM sys.dm_os_wait_stats ORDER BY wait_time_ms DESC; -- 查看等待类型
top、htop监控CPU、内存占用,vmstat监控磁盘I/O。