异步 AO 中的 SQL 数据库 - 日志文件在备份后不显示



我有一个数据库,其日志文件大小为527GB,显示几乎100%的使用率。数据库处于与另一台 SQL 服务器的 AO 异步复制中。数据库处于完整备份模式,日志备份每小时进行一次。我试图缩小日志文件,它不起作用,给了我以下消息。

Msg 1468, Level 16, State 2, Line 2
The operation cannot be performed on database "MYDB" because it is involved in a database mirroring session or an availability group. Some operations are not allowed on a database that is participating in a database mirroring session or in an availability group.
Msg 5069, Level 16, State 1, Line 2
ALTER DATABASE statement failed.
The log for database 'MYDB' cannot be shrunk until all secondaries have moved past the point where the log was added..
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

我认为它没有这样做,因为复制所有日志都没有传输,而且一直都在传输。如何在不将数据库从AO复制组中取出的情况下解决问题?我可以将其移动到同步模式,但我不希望它移出AO。

要查看问题的原因,请查看以下查询结果(log_truncation_holdup_reason字段(:

select * from sys.dm_db_log_stats(db_id('YourDatabaseName'))

UPD:对于低于 2016 SP2 的版本,您可以使用查询获取相同的版本:

SELECT log_reuse_wait_desc
FROM sys.databases
WHERE name = 'YourDatabaseName'

如果是AVAILABILITY_REPLICA则检查活动事务以了解可能导致它的原因。

dbcc opentran

根据结果,您将能够决定应该做什么。

相关内容

最新更新