首先确认SQL Server服务是否正在运行,使用以下命令查看服务状态:
sudo systemctl status mssql-server --no-pager
如果服务未启动,启动服务并设置开机自启:
sudo systemctl start mssql-server
sudo systemctl enable mssql-server
若服务启动失败,需结合日志进一步分析(见查看日志文件部分)。
SQL Server的错误日志是故障排查的核心依据,默认路径为/var/opt/mssql/log/errorlog。使用以下命令实时查看最新日志:
sudo tail -f /var/opt/mssql/log/errorlog
日志中会记录服务启动失败、连接错误、查询异常等关键信息,帮助快速定位问题根源。
SQL Server默认使用1433端口,需确保端口未被占用且防火墙允许通信:
sudo netstat -tuln | grep 1433
若端口被占用,通过sudo lsof -i :1433找到占用进程并终止(sudo kill -9 <PID>)。ufw):sudo ufw allow 1433/tcp
sudo ufw reload
telnet <服务器IP> 1433测试端口连通性。SQL Server运行需要足够的系统资源,资源不足会导致服务崩溃或性能下降:
df -h
确保根分区(/)至少有2GB可用空间(SQL Server最低要求)。free -h
确保有2GB以上可用内存(SQL Server默认会占用较多内存)。top或htop命令查看CPU、内存占用情况,找出占用过高的进程。安装过程中若出现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修复依赖关系。
设置SA密码时,需满足以下条件:
mssql-conf setup会提示错误,需重新设置密码。若数据库出现损坏(如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';
GO
注意:REPAIR_ALLOW_DATA_LOSS可能导致数据丢失,需提前备份。sqlcmd运行SET SHOWPLAN_ALL ON分析查询执行计划,找出低效SQL;或使用SQL Server Profiler(通过Wine在Linux上运行)追踪查询。iostat监控磁盘I/O,vmstat监控内存和CPU使用,netstat监控网络连接,识别性能瓶颈。localhost无法连接,尝试改用127.0.0.1;确保SQL Server配置为允许远程连接(通过mssql-conf设置)。custom.java.security文件(路径:/etc/sqlserver/java.security),内容为:jdk.tls.disabledAlgorithms=SSLv3, TLSv1.1, RC4, DES, MD5withRSA, DH keySize < 1024, EC keySize < 224, 3DES_EDE_CBC, anon, NULL, include jdk.disabled.namedCurves
并在连接时添加encrypt=true;trustServerCertificate=true参数。