Debian系统中,SQL Server的日志文件主要分布在两个目录:
/var/opt/mssql/log/,包含SQL Server实例的启动、运行及错误信息(如errorlog文件);/var/opt/mssql/data/),文件扩展名为.ldf(如YourDatabaseName.ldf)。连接到SQL Server实例后,展开“管理”→“SQL Server日志”,可查看错误日志;右键“新建错误日志”可创建新的日志文件。
journalctl -u mssql-server查看SQL Server服务的系统日志;sudo tail -f /var/opt/mssql/log/errorlog实时查看错误日志;fn_dblog(NULL, NULL)查看当前数据库的事务日志内容(需谨慎,可能影响性能)。BACKUP DATABASE [YourDatabaseName] TO DISK = 'path_to_backup.bak' WITH INIT,备份所有数据库数据及日志;BACKUP LOG [YourDatabaseName] TO DISK = 'path_to_log_backup.trn' WITH INIT,截断日志并释放空间;ALTER DATABASE [YourDatabaseName] SET RECOVERY SIMPLE),此时日志会在检查点后自动截断,但无法进行事务日志恢复。使用logrotate工具自动化管理日志文件的轮转、压缩与删除,避免日志文件过大占用磁盘空间。
sudo apt-get install logrotate;/etc/logrotate.d/sqlserver,添加以下内容(示例):/var/opt/mssql/log/*.log { daily rotate 7 compress missingok notifempty create 0644 mssql mssql sharedscripts } 说明:每日轮转,保留7天压缩日志,缺失文件不报错,空文件不轮转,创建新日志文件时权限为0644,所有者为mssql用户。BACKUP LOG命令手动截断;ALTER DATABASE [YourDatabaseName] SET RECOVERY SIMPLE)。使用DBCC SHRINKFILE命令收缩日志文件(需先截断日志):
USE [YourDatabaseName]; DBCC SHRINKFILE (YourLogFileName, target_size_in_MB); 说明:YourLogFileName可通过SELECT name FROM sys.database_files WHERE type_desc = 'LOG'查询;target_size_in_MB为目标大小(如100表示收缩至100MB)。
BULK INSERT或SELECT INTO时,添加WITH (TABLOCK)提示(BULK INSERT YourTable FROM 'data.csv' WITH (TABLOCK)),减少日志量,但需提前备份数据;DBCC OPENTRAN),释放日志空间。mssql用户、DBA)能访问和修改日志文件;WITH NO_LOG)可能导致审计追踪失效,违反行业监管要求(如GDPR、HIPAA),需谨慎使用;