0

我的问题很简单:收缩日志文件不起作用。当我执行维护计划(数据库完整备份和收缩数据库日志)时,执行终止时没有问题或错误,但日志文件以相同的百分比使用。

数据库位于 AlwaysOn 高可用性组中。该组有 1 台主服务器(称为 BO1)、2 台辅助服务器(称为 BO2 e MI1),我使用 SQL Server 2014。

执行备份后,我使用了命令

DBCC SQLPERF(LOGSPACE);

我检查了我的日志数据库(名为 DM_AUT 的数据库)。结果如下:日志大小 (MB) 10689.3 和已用日志空间 (%) 90.90916。

这些是我用于完整备份的脚本:

DECLARE @preferredReplica int

SET @preferredReplica = (SELECT [master].sys.fn_hadr_backup_is_preferred_replica('DM_AUT'))

IF (@preferredReplica = 1)
  BEGIN
      BACKUP DATABASE [DM_AUT] TO  DISK = N'K:\xxx\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\DM_AUT.bak' WITH  COPY_ONLY, NOFORMAT, INIT,  NAME = N'DM_AUT_backup_2017_02_24_125045_4829954', SKIP, REWIND, NOUNLOAD, COMPRESSION,  STATS = 10
 END
GO

declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'DM_AUT' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'DM_AUT' )
if @backupSetId is null begin raiserror(N'Verify failed. Backup information for database ''DM_AUT'' not found.', 16, 1) end
RESTORE VERIFYONLY FROM  DISK = N'K:\xxx\Microsoft SQL Server\MSSQL12.MSSQLSERVER\MSSQL\Backup\DM_AUT.bak' WITH  FILE = @backupSetId,  NOUNLOAD,  NOREWIND

备份后我执行了收缩命令:

USE DM_AUT
BACKUP LOG BISYSTEM TO DISK='NUL:'
DBCC SHRINKFILE (DM_AUT_log,50)

在这些维护活动结束时,我检查了数据库日志,结果是相同的:使用的日志空间 (%) 90.90916。

我在这个 AlwaysOn 组中有其他数据库,但备份和收缩日志文件工作正常(并且使用相同的脚本)。

这些是数据库配置: 在此处输入图像描述

我想了解如何修复收缩日志任务。

谢谢大家。

4

1 回答 1

0

当日志文件异常增长时,收缩不是解决方案。您应该检查可以延迟日志截断的因素

有关了解日志文件结构以及 SQL Server 何时释放日志文件的更多信息,我建议阅读这篇文章:

SQL Server 事务日志体系结构和管理指南

于 2021-12-09T18:23:05.390 回答