1. 检查SQL Server服务状态
使用sudo systemctl status mssql-server
命令确认SQL Server服务是否处于运行状态。若服务未启动,可通过sudo systemctl start mssql-server
启动服务;若启动失败,需结合日志进一步排查。
2. 查看SQL Server日志文件
SQL Server的错误日志默认存储在/var/log/mssql/errorlog
,系统日志可通过journalctl -u mssql-server
查看。日志中的错误信息(如启动失败原因、连接拒绝原因)是定位问题的关键依据。
3. 验证文件权限与所有权
SQL Server相关目录(如/var/opt/mssql
)需确保属主为mssql
用户。使用chown -R mssql:mssql /var/opt/mssql
命令修复权限问题,避免因权限不足导致服务无法访问文件。
4. 检查防火墙设置
SQL Server默认使用1433端口,需通过防火墙放行。执行以下命令添加规则并重载:
sudo firewall-cmd --zone=public --add-port=1433/tcp --permanent
sudo firewall-cmd --reload
确保防火墙未阻止外部或本地连接。
5. 测试网络连接性
使用ping <服务器IP>
测试服务器可达性;通过telnet <服务器IP> 1433
或nc -zv <服务器IP> 1433
检查1433端口是否监听。若端口不通,需排查网络配置或中间设备(如路由器)的限制。
6. 审查SQL Server配置文件
配置文件/etc/mssql/mssql.conf
(或/etc/mssql/mssql.conf.d/90-sqlservr.conf
)中的参数需正确设置。重点检查listen_addresses
(建议设为0.0.0.0
以允许远程连接)、port
(默认1433)等参数,修改后需重启服务生效。
7. 处理数据库文件问题
若出现数据库损坏(如启动时报错“数据库文件无法访问”),需进入单用户模式排查:
sudo systemctl stop mssql-server
sudo /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
可能导致数据丢失,需谨慎使用。)8. 监控系统资源使用
通过top
、htop
、free -m
、df -h
等命令检查CPU、内存、磁盘空间的使用情况。若资源耗尽(如内存不足、磁盘空间占满),SQL Server可能无法正常运行,需扩容或优化资源占用。
9. 检查SELinux策略(若启用)
使用getenforce
命令确认SELinux状态。若为Enforcing
模式,可能限制SQL Server的网络访问或文件操作。可临时设置为Permissive
模式测试(sudo setenforce 0
),若问题解决,需配置SELinux策略允许SQL Server的相关操作(如setsebool -P mssql_can_network_connect 1
)。
10. 验证客户端工具与连接
确保CentOS上安装了SQL Server客户端工具(如mssql-tools
):
sudo yum install -y mssql-tools unixODBC-devel
配置环境变量:
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
source ~/.bash_profile
测试连接:使用sqlcmd -S localhost -U SA -P '密码'
登录,确认客户端配置正确。