首先确认SQL Server服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mssql-server
若服务未启动,可通过以下命令启动并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
服务状态异常(如inactive
或failed
)是许多问题的根源,需优先排查。
错误日志包含详细的故障信息(如启动失败、连接错误、查询异常),是定位问题的关键。SQL Server的错误日志默认位于:
/var/opt/mssql/log/errorlog
使用以下命令实时查看日志(推荐):
sudo tail -f /var/opt/mssql/log/errorlog
若日志路径不存在,可检查/etc/opt/mssql/mssql.conf
中的logging
配置项确认日志位置。
资源不足(磁盘空间、内存、CPU)会导致SQL Server运行缓慢或崩溃,需检查以下指标:
df -h
查看磁盘使用情况,确保/var/opt/mssql
(SQL Server数据目录)所在分区有足够空间(建议至少保留2GB)。free -h
查看内存占用,SQL Server默认会占用较多内存,若系统内存不足,可通过mssql-conf
调整memory.memorylimitmb
参数(如设置为2048表示2GB)。top
或htop
查看CPU占用,若SQL Server进程占用过高,需优化查询或升级硬件。连接问题(如无法远程访问、Connection refused
)通常与网络或配置有关:
sudo ufw allow 1433/tcp
sudo netstat -tulnp | grep mssql
检查1433端口是否被SQL Server进程占用,若被其他进程占用,需终止冲突进程或修改SQL Server端口。sqlcmd
工具测试本地连接(替换your_password
为SA用户密码):sqlcmd -S localhost -U SA -P your_password
若本地连接成功,再测试远程连接(需确保远程服务器防火墙开放端口,且SQL Server配置允许远程连接)。配置文件错误(如mssql.conf
中的参数设置不当)会导致服务异常,需检查以下配置文件:
/etc/opt/mssql/mssql.conf
(部分版本为/etc/mssql/mssql.conf
),重点检查以下参数:
network.ipaddress
:确保IP地址正确(若为空则监听所有接口)。network.port
:确保端口为1433(或自定义端口)。memory.memorylimitmb
:确保内存限制合理(不低于2GB)。sudo systemctl restart mssql-server
或使用mssql-conf
工具动态调整(如修改内存限制):sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 2048
sudo systemctl restart mssql-server
SQL Server依赖的系统库缺失或版本不兼容会导致安装或运行失败,常见缺失库包括liblber-2.4.so.2
、libssl1.1
等。可通过以下命令安装缺失依赖:
sudo apt-get update
sudo apt-get install -y liblber-2.4-2 libssl1.1
若依赖问题仍存在,可使用ldd
命令检查SQL Server二进制文件的依赖(如/opt/mssql/bin/sqlservr
):
ldd /opt/mssql/bin/sqlservr | grep "not found"
根据输出安装缺失的库。
SQL Server提供多种诊断工具,帮助定位性能或功能问题:
sys.dm_exec_connections
:查看当前连接信息。sys.dm_exec_requests
:查看正在执行的请求及执行计划。sys.dm_os_performance_counters
:查看系统性能计数器(如CPU使用、内存使用)。SELECT
session_id,
text AS query_text,
start_time,
total_elapsed_time/1000 AS elapsed_seconds
FROM
sys.dm_exec_requests r
CROSS APPLY
sys.dm_exec_sql_text(r.sql_handle)
WHERE
total_elapsed_time > 5000;
mssql-tools
安装(sudo apt-get install mssql-tools
)。sys.fn_xe_file_target_read_file
)。若以上步骤无法解决问题,建议查阅SQL Server官方文档(Ubuntu上SQL Server部署指南)或在技术社区(如Stack Overflow、Microsoft Q&A)寻求帮助。提供详细的错误日志、配置信息及操作步骤,有助于快速定位问题。