在CentOS系统中,SQL Server的日志文件(.ldf)默认存储在/var/opt/mssql/log/目录下。若需确认特定数据库的日志文件路径,可通过以下T-SQL查询获取:
SELECT name, physical_name AS CurrentLocation
FROM sys.master_files
WHERE database_id = DB_ID('YourDatabaseName') AND type_desc = 'LOG';
此方法可快速定位日志文件的物理存储位置,便于后续管理。
使用DBCC SQLPERF(LOGSPACE)命令可查看所有数据库的日志空间使用详情,包括总大小、已用空间、剩余空间及使用百分比。示例:
USE [YourDatabaseName];
GO
DBCC SQLPERF(LOGSPACE);
该命令能帮助管理员快速识别日志空间占用过高的数据库,为后续维护提供依据。
当日志文件膨胀至过大时,可通过以下步骤收缩:
ALTER DATABASE YourDatabaseName SET RECOVERY SIMPLE;
DBCC SHRINKFILE (YourDatabaseName_Log, target_size_in_MB); -- 替换为目标大小(如100表示100MB)
注意:频繁收缩日志可能导致性能下降,建议仅在日志异常膨胀时使用。为防止日志文件填满磁盘,需设置合理的自动增长参数:
事务日志备份是控制日志大小的关键。对于完整恢复模型,需定期执行日志备份并截断日志:
BACKUP LOG YourDatabaseName
TO DISK = '/var/opt/mssql/backup/YourDatabaseName_LogBackup.trn'
WITH INIT, STATS = 10; -- INIT覆盖现有备份,STATS显示进度
慢查询日志可帮助定位性能瓶颈。通过以下步骤启用:
ALTER DATABASE YourDatabaseName SET RECOVERY SIMPLE;
DBCC SHRINKFILE (YourDatabaseName_Log, 0, TRUNCATEONLY);
ALTER DATABASE YourDatabaseName SET RECOVERY FULL;
慢查询日志会记录执行时间超过阈值的查询,便于优化SQL语句。