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 --permanent
sudo firewall-cmd --reload
ping <服務器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-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
可能導致部分數據丟失,需謹慎使用。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. 檢查客戶端連接配置
確??蛻舳斯ぞ撸ㄈ?code>sqlcmd、mssql-tools
)已正確安裝:
sudo yum install -y mssql-tools unixODBC-devel
echo 'export PATH="$PATH:/opt/mssql-tools/bin"' >> ~/.bash_profile
,執行source ~/.bash_profile
生效。10. 處理SELinux限制(可選)
若SELinux處于啟用狀態(getenforce
返回Enforcing
),可能限制SQL Server訪問文件或端口??膳R時將其設置為寬容模式(sudo setenforce 0
)測試是否解決問題;生產環境中,建議通過semanage
命令配置SELinux策略,而非直接禁用。