1. 检查SQL Server服务状态
使用systemctl status mssql-server命令确认SQL Server服务是否处于运行状态。若服务未启动,可通过systemctl start mssql-server启动服务;若启动失败,需进一步查看日志定位原因。
2. 查看SQL Server错误日志
SQL Server的错误日志是故障排查的核心依据,通常位于/var/log/mssql/errorlog。通过分析日志中的错误信息(如启动失败原因、数据库损坏提示、权限问题等),可快速定位问题根源。此外,使用journalctl -u mssql-server查看系统日志,补充了解服务启动过程的详细信息。
3. 验证文件权限与所有权
SQL Server需对相关目录(如数据目录、日志目录)具有读写权限。使用chown -R mssql:mssql /var/opt/mssql命令将/var/opt/mssql目录及其子文件的所有权修改为mssql用户及组,修复因权限不足导致的启动失败或文件访问问题。
4. 检查防火墙与网络连接
确保防火墙允许SQL Server默认端口(1433)的流量通过:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanentsudo firewall-cmd --reloadping <服务器IP>测试网络可达性,通过telnet <服务器IP> 1433或nc -zv <服务器IP> 1433检查端口是否监听,解决网络阻断导致的连接失败问题。5. 确认SQL Server配置正确性
检查SQL Server配置文件(如/etc/mssql/mssql.conf或/var/opt/mssql/mssql.conf)的关键参数:
listen_addresses需设置为0.0.0.0(监听所有网络接口)或指定IP地址,确保允许远程连接;6. 处理数据库文件损坏问题
若日志显示数据库文件损坏,需进入单用户模式修复:
sudo systemctl stop mssql-serversudo /opt/mssql/bin/sqlservr -m(观察控制台输出,确认损坏的数据库名称)sqlcmd执行修复命令(需提前备份数据):sudo /opt/mssql/bin/sqlcmd -S localhost -U SA -Q "DBCC CHECKDB ('数据库名称') REPAIR_ALLOW_DATA_LOSS"REPAIR_ALLOW_DATA_LOSS可能导致部分数据丢失,需谨慎使用。7. 监控系统资源使用情况
使用top、htop命令查看CPU、内存占用情况,通过df -h检查磁盘空间(确保剩余空间大于数据库文件的10%),使用iostat(需安装sysstat包)监控磁盘I/O性能。资源瓶颈(如内存不足、磁盘空间满)可能导致SQL Server性能下降或服务崩溃,需及时扩容或优化资源分配。
8. 优化查询与性能问题
通过SQL Server的动态管理视图(DMV)分析性能瓶颈:
sys.dm_exec_requests:查看当前正在执行的请求(重点关注wait_type、cpu_time、logical_reads);sys.dm_exec_query_stats:分析查询执行统计信息(如执行次数、平均耗时);sys.dm_exec_sql_text:查看对应查询的SQL文本。SELECT *、减少子查询嵌套)提升性能。9. 检查客户端连接配置
确保客户端工具(如sqlcmd、mssql-tools)已正确安装:
sudo yum install -y mssql-tools unixODBC-develecho 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile,执行source ~/.bash_profile生效。10. 处理SELinux限制(可选)
若SELinux处于启用状态(getenforce返回Enforcing),可能限制SQL Server访问文件或端口。可临时将其设置为宽容模式(sudo setenforce 0)测试是否解决问题;生产环境中,建议通过semanage命令配置SELinux策略,而非直接禁用。