Ubuntu环境下SQL Server故障排查技巧
确认SQL Server服务是否正常运行是排查故障的第一步。使用以下命令检查服务状态:
sudo systemctl status mssql-server --no-pager
若服务未启动,可通过sudo systemctl start mssql-server
启动;若需重启服务(如修改配置后),使用sudo systemctl restart mssql-server
。
SQL Server错误日志包含详细的故障信息,是定位问题的核心依据。默认日志路径为/var/opt/mssql/log/errorlog
,可使用以下命令查看:
sudo cat /var/opt/mssql/log/errorlog
(查看全部日志)或tail -f /var/opt/mssql/log/errorlog
(实时跟踪最新日志)。
此外,系统日志(journalctl -xe
、/var/log/syslog
)也能提供内核、系统层面的错误线索。
资源不足(CPU、内存、磁盘空间)是导致SQL Server性能下降或无法启动的常见原因。使用以下工具监控资源使用情况:
top
/htop
:查看CPU、内存占用率,识别高消耗进程;df -h
:检查磁盘空间(重点关注/var/opt/mssql
目录,避免日志或数据文件占满);vmstat 1
:监控磁盘I/O、内存交换等实时指标。连接问题多与网络配置或防火墙有关:
ping <服务器IP>
测试客户端与服务器的网络连接;sudo ufw status
查看防火墙规则,若未开放则执行sudo ufw allow 1433/tcp
;telnet <服务器IP> 1433
(若无法连接,需检查防火墙或网络设备设置)。SQL Server的配置文件(/etc/mssql/mssql.conf
或/opt/mssql/bin/mssql-conf setup
生成的配置)设置错误可能导致服务异常。常见需检查的配置项包括:
memory.memorylimitmb
,避免设置过大导致系统内存不足);max degree of parallelism
,根据服务器CPU核心数调整)。数据库损坏会导致查询失败或服务崩溃,可使用内置命令修复:
USE <数据库名>; DBCC CHECKDB;
(若返回错误,需进一步修复);DBCC CHECKTABLE('<表名>', REPAIR_ALLOW_DATA_LOSS)
(修复前建议备份数据,REPAIR_ALLOW_DATA_LOSS
可能丢失部分数据);ALTER DATABASE <数据库名> SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
),修复后恢复多用户模式(ALTER DATABASE <数据库名> SET MULTI_USER;
)。安装过程中若缺少依赖库,会导致SQL Server无法启动。常见缺失库及解决方法:
liblber-2.4.so.2
:安装libldap-2.4-2
包(sudo apt-get install libldap-2.4-2
);libssl1.1
:安装libssl1.1
包(sudo apt-get install libssl1.1
);ldd
命令检查SQL Server二进制文件的依赖项(ldd /opt/mssql/bin/sqlservr
),根据提示安装缺失的库。利用微软提供的工具进一步诊断问题:
sqlcmd -S <服务器名> -U <用户名> -P <密码> -Q "SELECT @@VERSION"
);sys.dm_exec_connections
查看连接状态、sys.dm_exec_requests
查看正在执行的请求);