SQL Server在Debian系统中的日志文件默认存储在/var/opt/mssql/log/目录下,常见日志类型及路径如下:
/var/opt/mssql/log/errorlog;/var/opt/mssql/log/query.log;/var/opt/mssql/log/slow-query.log。通过tail、cat、less等命令实时或静态查看日志内容:
sudo tail -f /var/opt/mssql/log/errorlog(常用,可实时查看最新日志);sudo cat /var/opt/mssql/log/errorlog(需注意日志文件较大时可能占用较多终端空间);sudo less /var/opt/mssql/log/query.log(支持上下翻页,退出按q)。若已安装SSMS,可通过图形界面查看日志:
通过T-SQL函数查看事务日志或特定日志内容:
SELECT * FROM sys.fn_dblog(NULL, NULL)(返回当前数据库的事务日志记录,包含事务ID、操作类型、对象ID等字段,需注意日志量较大时可能影响性能);EXEC xp_readerrorlog 0, 1, N'SQL Server started'(读取最近的错误日志,参数0表示当前日志,1表示错误日志类型,N'SQL Server started'为过滤关键词)。通过/etc/mssql/sqlserver.conf文件调整日志行为(需重启SQL Server服务使配置生效):
sudo sed -i 's/#general_log = 0/general_log = 1/' /etc/mssql/sqlserver.conf
sudo sed -i 's/#log_output = 0/log_output = 2/' /etc/mssql/sqlserver.conf # 2表示写入文件
sudo systemctl restart mssql-server
sudo sed -i 's/#slow_query_log = 0/slow_query_log = 1/' /etc/mssql/sqlserver.conf
sudo sed -i 's/#slow_query_log_file =.*$/slow_query_log_file = \/var\/opt\/mssql\/log\/slow-query.log/' /etc/mssql/sqlserver.conf
sudo sed -i 's/#long_query_time = 10/long_query_time = 500/' /etc/mssql/sqlserver.conf # 记录执行时间超过500ms的查询
sudo systemctl restart mssql-server
使用logrotate工具自动化管理日志文件的轮转、压缩与删除,避免日志文件过大占用磁盘空间:
sudo nano /etc/logrotate.d/sqlserver;/var/opt/mssql/log/*.log {
daily
rotate 7
compress
missingok
notifempty
create 0640 mssql mssql
sharedscripts
postrotate
systemctl reload mssql-server > /dev/null 2>&1 || true
endscript
}
sudo logrotate -d /etc/logrotate.d/sqlserver(模拟轮转过程,不实际执行);sudo logrotate -f /etc/logrotate.d/sqlserver(强制立即轮转)。若数据库处于FULL恢复模式,事务日志会持续增长,需定期截断:
USE master;
GO
ALTER DATABASE [YourDatabaseName] SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE (YourDatabaseName_Log, 100); -- 100为收缩后的目标大小(MB)
GO
ALTER DATABASE [YourDatabaseName] SET RECOVERY FULL;
GO
BACKUP LOG [YourDatabaseName] TO DISK = '/var/opt/mssql/backup/YourDatabaseName_Log.bak' WITH INIT;
GO
find命令):sudo find /var/opt/mssql/log/ -name "*.log" -type f -mtime +7 -exec rm -f {} \;
通过监控工具(如Prometheus+Granafa、Zabbix)监控日志文件的大小、数量及内容,设置警报规则(如日志文件超过1GB时触发邮件通知),及时处理异常情况。
mssql用户、root用户)能访问和修改日志文件,避免敏感信息泄露;