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
注意:重新配置会清除现有配置,需提前备份重要数据。