1. 定位SQL Server日志文件
在Debian系統中,SQL Server的日志文件默認存儲在/var/opt/mssql/log/目錄下,常見文件包括sqlserver.log(主錯誤日志)、error.log(系統錯誤日志)。若啟用了查詢或慢查詢日志,還可能存在query.log、slow-query.log等文件??赏ㄟ^ls /var/opt/mssql/log/命令查看所有日志文件,使用tail -f /var/opt/mssql/log/sqlserver.log實時監控日志內容。
2. 查看與分析日志內容
cat、less查看日志詳情,tail -f實時跟蹤新增日志(如sudo tail -f /var/opt/mssql/log/sqlserver.log);fn_dblog()函數查看事務日志的具體內容(如SELECT * FROM sys.fn_dblog(NULL, NULL)),可分析日志增長原因(如大量的事務操作)。3. 配置日志輪轉(logrotate)
使用logrotate工具自動化管理日志文件的輪轉、壓縮與刪除,避免日志文件過大占用磁盤空間。
sudo apt-get install logrotate;sudo nano /etc/logrotate.d/sqlserver,添加以下內容(示例):/var/opt/mssql/log/*.log {
daily # 每日輪轉
rotate 7 # 保留7個舊日志文件
compress # 壓縮舊日志(節省空間)
missingok # 若日志文件不存在也不報錯
notifempty # 若日志為空則不輪轉
create 0644 mssql mssql # 新日志文件的權限與所有者
sharedscripts # 所有日志輪轉完成后執行腳本
}
sudo logrotate -d /etc/logrotate.d/sqlserver(模擬運行),確認無誤后sudo logrotate -f /etc/logrotate.d/sqlserver(強制執行)。4. 調整恢復模式控制日志增長
ALTER DATABASE [YourDatabaseName] SET RECOVERY SIMPLE;(注意:此模式下無法進行時間點恢復);BACKUP LOG [YourDatabaseName] TO DISK = 'path_to_backup_file.bak' WITH FORMAT;。5. 定期清理與收縮日志文件
DBCC SHRINKFILE ('YourDatabaseName_log', target_size_in_MB);(如DBCC SHRINKFILE ('TestDB_log', 100);將日志收縮至100MB);6. 監控與警報設置
7. 權限與安全注意事項
chown設置所有者為mssql:mssql,chmod設置權限為644);WITH NO_LOG參數)可能導致審計追蹤失效,違反行業監管要求(如GDPR),需謹慎操作。