使用systemctl命令确认SQL Server服务是否正在运行:
sudo systemctl status mssql-server
若服务未启动,执行以下命令启动:
sudo systemctl start mssql-server
若启动失败,需结合日志进一步分析原因(如端口冲突、权限不足等)。
SQL Server的错误日志是故障排查的核心依据,默认路径为/var/log/mssql/errorlog。通过以下命令查看最新日志:
tail -n 100 /var/log/mssql/errorlog # 查看最后100行日志
日志中会记录启动错误、数据库损坏、权限问题等关键信息,需重点关注“ERROR”“FAILED”等关键词。
使用journalctl查看SQL Server服务的系统级日志,获取更详细的启动过程信息:
journalctl -u mssql-server -b # 查看本次启动的日志
若服务无法启动,日志中可能包含“无法绑定端口”“权限拒绝”等线索。
SQL Server要求其数据目录(/var/opt/mssql)及子目录必须属于mssql用户和组。修复权限的命令如下:
sudo chown -R mssql:mssql /var/opt/mssql/
sudo chmod -R 750 /var/opt/mssql/ # 确保目录可读可执行
权限问题常导致服务启动失败或数据库无法访问。
SQL Server默认使用1433端口(TCP),需确保防火墙放行该端口:
# 添加永久规则
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
# 重新加载防火墙
sudo firewall-cmd --reload
若未开放端口,客户端将无法连接到SQL Server。
使用ping命令测试服务器可达性,使用telnet或nc命令检查1433端口是否监听:
ping <服务器IP> # 测试网络连通性
telnet <服务器IP> 1433 # 测试端口连通性(若未安装telnet,执行sudo yum install telnet)
# 或使用nc命令
nc -zv <服务器IP> 1433
若无法连通,需排查网络配置(如防火墙、路由、安全组)。
SQL Server的主配置文件为/etc/mssql/mssql.conf(或/etc/mssql/mssql.conf.d/下的子配置),需检查以下关键参数:
listen_addresses:应设置为0.0.0.0(监听所有接口)或指定IP地址;port:确认端口是否为1433(或自定义端口);network.ipaddress:确保网络配置正确。sudo systemctl restart mssql-server
```。
#### **8. 处理数据库文件损坏**
若日志显示数据库文件损坏,需进入单用户模式修复(需提前备份数据):
```bash
# 停止SQL Server服务
sudo systemctl stop mssql-server
# 以单用户模式启动(仅允许一个连接)
sudo /opt/mssql/bin/sqlservr -m
# 在另一个终端使用sqlcmd修复数据库(替换“数据库名称”为实际名称)
sqlcmd -S localhost -U SA -Q "DBCC CHECKDB ('数据库名称') WITH REPAIR_ALLOW_DATA_LOSS"
注意:REPAIR_ALLOW_DATA_LOSS选项可能导致数据丢失,需谨慎使用。
使用以下命令检查系统资源是否充足(CPU、内存、磁盘空间):
top # 查看CPU和内存使用率
free -m # 查看内存使用情况(单位:MB)
df -h # 查看磁盘空间使用情况
iostat -x 1 # 查看磁盘I/O性能(需安装sysstat包:sudo yum install sysstat)
资源不足(如磁盘空间耗尽、内存不足)会导致SQL Server性能下降或崩溃。
若系统启用了SELinux(getenforce返回Enforcing),可能会限制SQL Server的网络访问。可临时设置为宽容模式测试:
setenforce 0 # 临时关闭SELinux(重启后恢复)
若问题解决,需调整SELinux策略(如允许SQL Server访问网络):
semanage port -a -t mssql_port_t -p tcp 1433 # 添加1433端口到mssql_port_t类型
```。
#### **11. 验证客户端工具与连接字符串**
确保客户端已安装必要的工具(如`msodbcsql`、`sqlcmd`):
```bash
sudo yum install -y msodbcsql mssql-tools # 安装ODBC驱动和sqlcmd
检查连接字符串是否正确(包括服务器地址、端口、数据库名称、用户名、密码),例如:
sqlcmd -S tcp:<服务器IP>,1433 -U SA -P '密码' -d '数据库名称'
连接字符串错误会导致无法连接到SQL Server。