阅读量:24
Ubuntu上SQL Server故障排查指南
1. 服务状态检查
首先确认SQL Server服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mssql-server --no-pager
如果服务未启动,启动服务并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
若服务启动失败,需结合日志进一步分析(见查看日志文件部分)。
2. 查看日志文件
SQL Server的错误日志是故障排查的核心依据,默认路径为/var/opt/mssql/log/errorlog。使用以下命令实时查看最新日志:
sudo tail -f /var/opt/mssql/log/errorlog
日志中会记录服务启动失败、连接错误、查询异常等关键信息,帮助快速定位问题根源。
3. 端口与防火墙检查
SQL Server默认使用1433端口,需确保端口未被占用且防火墙允许通信:
- 检查端口占用:
若端口被占用,通过sudo netstat -tuln | grep 1433sudo lsof -i :1433找到占用进程并终止(sudo kill -9)。 - 开放防火墙端口(若使用
ufw):sudo ufw allow 1433/tcp sudo ufw reload - 验证连接:从客户端使用
telnet <服务器IP> 1433测试端口连通性。
4. 系统资源监控
SQL Server运行需要足够的系统资源,资源不足会导致服务崩溃或性能下降:
- 检查磁盘空间:
确保根分区(df -h/)至少有2GB可用空间(SQL Server最低要求)。 - 检查内存使用:
确保有2GB以上可用内存(SQL Server默认会占用较多内存)。free -h - 监控实时资源:使用
top或htop命令查看CPU、内存占用情况,找出占用过高的进程。
5. 常见错误解决方案
5.1 依赖库缺失
安装过程中若出现error while loading shared libraries错误(如liblber-2.4.so.2、libssl1.1),需手动安装缺失的库:
# 安装libldap-2.4-2(解决liblber错误)
wget https://community-packages.deepin.com/deepin/pool/main/o/openldap/libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64.deb
sudo dpkg -i libldap-2.4-2_2.4.47+dfsg.4-1+eagle_amd64.deb
# 安装libssl1.1(解决SSL相关错误)
wget http://security.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb
sudo dpkg -i libssl1.1_1.1.1-1ubuntu2.1~18.04.23_amd64.deb
安装后运行sudo apt-get install -f修复依赖关系。
5.2 SA密码不符合要求
设置SA密码时,需满足以下条件:
- 至少8个字符;
- 包含大写字母、小写字母、数字和特殊符号。
若密码不符合要求,mssql-conf setup会提示错误,需重新设置密码。
5.3 数据库损坏
若数据库出现损坏(如DBCC CHECKDB报错),可使用以下命令修复:
- 检查数据库完整性:
USE master; GO DBCC CHECKDB('数据库名') WITH NO_INFOMSGS, ALL_ERRORMSGS; - 修复表错误(需单用户模式):
注意:USE 数据库名; GO EXEC sp_dboption '数据库名', 'single user', 'true'; GO DBCC CHECKTABLE('表名', REPAIR_ALLOW_DATA_LOSS); DBCC CHECKTABLE('表名', REPAIR_REBUILD); GO EXEC sp_dboption '数据库名', 'single user', 'false'; GOREPAIR_ALLOW_DATA_LOSS可能导致数据丢失,需提前备份。
6. 性能优化工具
- 查询慢优化:使用
sqlcmd运行SET SHOWPLAN_ALL ON分析查询执行计划,找出低效SQL;或使用SQL Server Profiler(通过Wine在Linux上运行)追踪查询。 - 系统性能监控:使用
iostat监控磁盘I/O,vmstat监控内存和CPU使用,netstat监控网络连接,识别性能瓶颈。
7. 其他常见问题
- 连接异常:若使用
localhost无法连接,尝试改用127.0.0.1;确保SQL Server配置为允许远程连接(通过mssql-conf设置)。 - 证书问题:若出现SSL连接错误,创建
custom.java.security文件(路径:/etc/sqlserver/java.security),内容为:
并在连接时添加jdk.tls.disabledAlgorithms=SSLv3, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024>encrypt=true;trustServerCertificate=true参数。