You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何解决Ubuntu系统上的SQL Server报错?含mssql-server.service异常排查

解决Ubuntu上SQL Server服务异常(mssql-server.service因ABRT信号终止)

我来帮你一步步排查这个问题——服务因为ABRT信号终止,说明SQL Server进程意外崩溃了,咱们从最常见的原因开始梳理:

1. 先看SQL Server的错误日志(最关键)

崩溃前的详细错误信息几乎都在SQL Server的专属日志里,先拉取最新的日志内容:

sudo tail -n 50 /var/opt/mssql/log/errorlog

重点找崩溃时间点附近的报错,比如磁盘空间不足、权限被拒、配置文件损坏或者依赖库缺失,这些是最常见的触发ABRT信号的原因。

2. 检查磁盘空间是否充足

如果SQL Server的数据盘或者系统盘满了,进程会直接崩溃。用下面的命令查看磁盘使用情况:

df -h

重点关注/var/opt/mssql所在的分区(这是SQL Server存储数据和日志的默认目录),如果使用率达到100%,赶紧清理空间:

  • 删除旧的SQL Server日志文件(/var/opt/mssql/log下的旧文件)
  • 清理系统临时文件或者无用的安装包

3. 验证目录权限是否正确

SQL Server运行在mssql用户下,如果它没有权限访问数据目录或安装目录,也会崩溃。检查权限:

ls -ld /var/opt/mssql /opt/mssql
id mssql

确保这两个目录的所有者和组都是mssql,如果不对,修复权限:

sudo chown -R mssql:mssql /var/opt/mssql

4. 检查系统依赖是否完整

SQL Server在Ubuntu上依赖一些特定的系统库,比如旧版本的libssl,如果依赖缺失或损坏,进程会启动失败甚至崩溃。尝试修复并重新安装依赖:

sudo apt-get install -f
sudo apt-get reinstall mssql-server

⚠️ 重装前记得备份/var/opt/mssql/data目录,这里是你的数据库核心数据文件!

5. 分析核心转储文件(进阶排查)

ABRT信号通常会生成核心转储文件(core dump),可以用调试工具分析崩溃的具体调用栈:

  1. 找到核心转储文件,一般在/var/crash目录下
  2. 用gdb分析:
sudo gdb /opt/mssql/bin/sqlservr /var/crash/core.*

在gdb里输入bt命令查看调用栈,就能定位到崩溃的具体代码位置。如果看不懂调用栈,可以把输出内容贴出来进一步分析。

6. 尝试重启服务(清理残留进程)

有时候残留的僵尸进程会导致服务无法正常启动,先清理再重启:

sudo pkill sqlservr
sudo systemctl start mssql-server

然后再次查看服务状态:

sudo systemctl status mssql-server

最后还要注意:确认你的SQL Server版本和Ubuntu版本是否兼容——旧版SQL Server可能不支持最新的Ubuntu发行版,这也会导致启动失败。

内容的提问来源于stack exchange,提问作者Roshan Sankhe

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 04:03:02