linux

Linux上SQL Server故障如何排查

小樊
54
2025-09-20 12:38:35
栏目: 云计算

1. 检查SQL Server服务状态
使用systemctl命令确认SQL Server服务是否正在运行。若未运行,启动服务并检查状态:

sudo systemctl status mssql-server --no-pager  # 查看服务状态
sudo systemctl start mssql-server              # 启动服务(若未运行)

2. 查看SQL Server错误日志
SQL Server的错误日志是排查故障的核心线索,位于/var/opt/mssql/log/errorlog。使用以下命令查看日志内容(需root权限):

sudo cat /var/opt/mssql/log/errorlog           # 直接查看日志
sudo tail -f /var/opt/mssql/log/errorlog       # 实时跟踪日志更新

若日志文件编码为UTF-16,可使用iconv转换为UTF-8便于阅读:

sudo iconv -f UTF-16LE -t UTF-8 /var/opt/mssql/log/errorlog -o /tmp/errorlog_utf8
cat /tmp/errorlog_utf8

3. 验证网络连接与端口访问

4. 检查系统资源占用
使用tophtopfree -h命令监控系统资源(CPU、内存、磁盘),确认是否存在资源瓶颈:

top                                          # 实时查看CPU/内存使用率
free -h                                      # 查看内存及交换分区使用情况
df -h                                        # 查看磁盘空间占用

若内存不足,可通过mssql-conf调整SQL Server内存限制(如限制最大内存为4GB):

sudo /opt/mssql/bin/mssql-conf set memory.memorylimitmb 4096
sudo systemctl restart mssql-server

5. 分析崩溃转储文件
若SQL Server异常崩溃,可检查/var/opt/mssql/log目录下的转储文件(.mdmp为SQL Server转储,.tar.gz2为核心转储),定位崩溃原因:

ls -lh /var/opt/mssql/log/*.mdmp             # 查看SQL Server转储文件
ls -lh /var/opt/mssql/log/*.tar.gz2          # 查看核心转储文件

转储文件可使用SQL Server工具(如sqldump)或第三方工具(如WinDbg)分析。

6. 验证身份验证与权限

7. 检查系统日志
使用journalctl查看系统日志,获取与SQL Server相关的系统级错误(如权限问题、依赖库缺失):

journalctl -xe | grep mssql                    # 过滤SQL Server相关日志
journalctl -u mssql-server -b                  # 查看SQL Server服务启动日志

8. 处理常见配置问题

9. 使用SQL Server工具辅助排查

10. 重新配置SQL Server
若配置错误(如修改了数据目录、端口),可使用mssql-conf重新配置:

sudo /opt/mssql/bin/mssql-conf setup           # 重新配置实例(会重置部分设置)
sudo systemctl restart mssql-server

注意:重新配置会清除现有配置,需提前备份重要数据。

0
看了该问题的人还看了