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的網絡訪問或文件操作??膳R時設置為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 '密碼'
登錄,確認客戶端配置正確。