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. 验证网络连接与端口访问
localhost连接,尝试使用127.0.0.1(避免localhost未正确映射);ip addr show eth0(Ubuntu/Debian)或ip addr show ens33(CentOS/RHEL)获取服务器IP;ufw(Ubuntu)或firewalld(CentOS)确认端口是否开放:sudo ufw status | grep 1433 # Ubuntu查看端口状态
sudo firewall-cmd --list-ports | grep 1433 # CentOS查看端口状态
若未开放,添加规则:sudo ufw allow 1433/tcp # Ubuntu开放端口
sudo firewall-cmd --add-port=1433/tcp --permanent && sudo firewall-cmd --reload # CentOS开放端口
4. 检查系统资源占用
使用top、htop或free -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. 验证身份验证与权限
sa)和密码正确,注意密码大小写敏感及特殊字符(如$需转义为\$);sa密码,可通过以下命令重置:sudo systemctl stop mssql-server
sudo /opt/mssql/bin/mssql-conf setup # 按提示重置sa密码
sudo systemctl start mssql-server
7. 检查系统日志
使用journalctl查看系统日志,获取与SQL Server相关的系统级错误(如权限问题、依赖库缺失):
journalctl -xe | grep mssql # 过滤SQL Server相关日志
journalctl -u mssql-server -b # 查看SQL Server服务启动日志
8. 处理常见配置问题
/etc/hostname和/etc/hosts中的主机名(缩短至15字符内),并重启服务器;error while loading shared libraries,安装缺失的库(如libldap-2.4-2、libssl1.1):sudo apt install libldap-2.4-2 libssl1.1 # Ubuntu/Debian
sudo yum install openldap-clients openssl # CentOS/RHEL
9. 使用SQL Server工具辅助排查
sqlcmd -S localhost -U sa -P 'YourPassword' -Q "SELECT name, state_desc FROM sys.databases"
SELECT * FROM sys.fn_xe_file_target_read_file('system_health*.xel', NULL, NULL, NULL);
10. 重新配置SQL Server
若配置错误(如修改了数据目录、端口),可使用mssql-conf重新配置:
sudo /opt/mssql/bin/mssql-conf setup # 重新配置实例(会重置部分设置)
sudo systemctl restart mssql-server
注意:重新配置会清除现有配置,需提前备份重要数据。