Debian 上 SQL Server 日志管理实操指南
一 日志类型与存放路径
sudo tail -f /var/opt/mssql/log/sqlserver.log。这些日志记录了实例启动、错误、登录审计与配置变更等关键信息。二 查看与检索日志
sudo tail -f /var/opt/mssql/log/sqlserver.log;也可用 less/cat 浏览历史内容。SELECT * FROM sys.fn_dblog(NULL, NULL); 可查看当前活动事务日志的详细记录(如事务 ID、操作类型、对象 ID 等),用于定位长时间运行事务与异常操作。注意该结果集较大,建议按需筛选。三 事务日志容量控制与备份
ALTER DATABASE YourDatabaseName SET RECOVERY SIMPLE;ALTER DATABASE YourDatabaseName SET RECOVERY FULL;BACKUP LOG [YourDatabaseName] TO DISK = '/var/opt/mssql/backup/YourDatabaseName_log.bak' WITH FORMAT;DBCC OPENTRAN('YourDatabaseName'); 检查未提交或长时间运行的事务,必要时优化或拆分事务以减少日志膨胀。DBCC SHRINKFILE (N'YourDatabaseName_log', 2, TRUNCATEONLY); 仅在确认无长事务、已备份后执行,避免影响恢复点与性能。四 日志轮转与系统日志集成
EXEC sp_cycle_errorlog; 手动强制切换到新的错误日志文件,便于归档与清理。/var/opt/mssql/log/sqlserver.log {
daily
missingok
rotate 7
compress
delaycompress
notifempty
copytruncate
create 640 mssql mssql
}
说明:copytruncate 适用于被进程持续持有的日志文件;如改用 create 需确保进程能重新打开新文件。测试与强制执行可用 sudo logrotate -f /etc/logrotate.conf。sudo tail -f /var/log/syslog 或 journalctl -u mssql-server.service -f 辅助排查。五 监控与自动化建议
systemctl status mssql-server 检查实例状态;df -h 关注日志与数据盘空间;top/htop 观察 CPU/内存压力;journalctl -u mssql-server.service 查看服务级事件。