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),需谨慎操作。