SQL Server事务日志BACKUPS非常大

在SQL Server 2008 R2中,我有一个每晚有完整备份的数据库,每十分钟有一个事务日志备份。 数据库处于完全恢复模式。

问题是,事务日志的备份文件的大小是几百兆字节,但绝对不能。 数据库中没有任何活动。 每个备份只有十分钟。 他们是如此之大,几天后它将完全填满硬盘。

任何想法是什么导致备份如此之大以及如何解决?

只是要清楚,我们是在同一页面上,你说每个日志备份是几百MB,而不是日志文件(LDF)很大。 后者通常是通过复制,镜像,被遗忘的活动用户事务或sys.databases.log_reuse_wait_desc列出的其他东西来固定的。 不过,我明白事实并非如此。 如果每10分钟进行一次备份,每次备份数百MB,则意味着最近10分钟内必须有数百MB的活动。 也许有一些你不知道的活动呢?

当然,我认为你不使用WITH NO_TRUNCATEWITH COPY_ONLY语法的日志备份任务。

以下3个查询应该给你一个关于什么是日志充满的想法:

 use [<myproblemdb>]; go select count(*) as CountLogRecords, sum([Log Record Length]) [Total Log Length] from fn_dblog(null, null); select count(*) as CountTransactionRecords, sum([Log Record Length]) [Transaction Log Length], [Transaction ID] from fn_dblog(null, null) group by [Transaction ID] order by 2 desc; select count(*) as CountLogOperations, sum ([Log Record Length]) as [Operation Log Length], [Operation] from fn_dblog(null, null) group by [Operation] order by 2 desc; 

在备份之前,事务日志文件中有多less数据? 您可以使用DBCC LOGINFO或通过查看SQL Server Management Studio中的磁盘空间报告来查看。 日志备份有多大?

你可能有太多的VLF。 运行DBCC LOGINFO并查看返回了多less行。 如果有很多人考虑收缩数据库的事务日志并将其一步增加到适当的大小。