Ubuntu環境下SQL Server故障排查技巧
確認SQL Server服務是否正常運行是排查故障的第一步。使用以下命令檢查服務狀態:
sudo systemctl status mssql-server --no-pager
若服務未啟動,可通過sudo systemctl start mssql-server啟動;若需重啟服務(如修改配置后),使用sudo systemctl restart mssql-server。
SQL Server錯誤日志包含詳細的故障信息,是定位問題的核心依據。默認日志路徑為/var/opt/mssql/log/errorlog,可使用以下命令查看:
sudo cat /var/opt/mssql/log/errorlog(查看全部日志)或tail -f /var/opt/mssql/log/errorlog(實時跟蹤最新日志)。
此外,系統日志(journalctl -xe、/var/log/syslog)也能提供內核、系統層面的錯誤線索。
資源不足(CPU、內存、磁盤空間)是導致SQL Server性能下降或無法啟動的常見原因。使用以下工具監控資源使用情況:
top/htop:查看CPU、內存占用率,識別高消耗進程;df -h:檢查磁盤空間(重點關注/var/opt/mssql目錄,避免日志或數據文件占滿);vmstat 1:監控磁盤I/O、內存交換等實時指標。連接問題多與網絡配置或防火墻有關:
ping <服務器IP>測試客戶端與服務器的網絡連接;sudo ufw status查看防火墻規則,若未開放則執行sudo ufw allow 1433/tcp;telnet <服務器IP> 1433(若無法連接,需檢查防火墻或網絡設備設置)。SQL Server的配置文件(/etc/mssql/mssql.conf或/opt/mssql/bin/mssql-conf setup生成的配置)設置錯誤可能導致服務異常。常見需檢查的配置項包括:
memory.memorylimitmb,避免設置過大導致系統內存不足);max degree of parallelism,根據服務器CPU核心數調整)。數據庫損壞會導致查詢失敗或服務崩潰,可使用內置命令修復:
USE <數據庫名>; DBCC CHECKDB;(若返回錯誤,需進一步修復);DBCC CHECKTABLE('<表名>', REPAIR_ALLOW_DATA_LOSS)(修復前建議備份數據,REPAIR_ALLOW_DATA_LOSS可能丟失部分數據);ALTER DATABASE <數據庫名> SET SINGLE_USER WITH ROLLBACK IMMEDIATE;),修復后恢復多用戶模式(ALTER DATABASE <數據庫名> SET MULTI_USER;)。安裝過程中若缺少依賴庫,會導致SQL Server無法啟動。常見缺失庫及解決方法:
liblber-2.4.so.2:安裝libldap-2.4-2包(sudo apt-get install libldap-2.4-2);libssl1.1:安裝libssl1.1包(sudo apt-get install libssl1.1);ldd命令檢查SQL Server二進制文件的依賴項(ldd /opt/mssql/bin/sqlservr),根據提示安裝缺失的庫。利用微軟提供的工具進一步診斷問題:
sqlcmd -S <服務器名> -U <用戶名> -P <密碼> -Q "SELECT @@VERSION");sys.dm_exec_connections查看連接狀態、sys.dm_exec_requests查看正在執行的請求);