在Server 2008 R2中,我有一个数据库,它每十分钟进行一次完整的备份和事务日志备份。数据库处于完全恢复模式。
问题是事务日志的备份文件大小为数百兆字节,但绝对不应该是这样。数据库中根本没有这样的活动。每次备份只需十分钟。它们太大了,几天后它就会完全填满硬盘。
知道是什么原因导致备份如此庞大,以及如何修复吗?
发布于 2011-08-05 23:08:21
要明确的是,我们在同一个页面上,您是说每个日志备份都是数百个MBs,而不是日志文件(LDF)很大。后者通常是通过复制、镜像、被遗忘的活动用户事务或sys.databases.log_reuse_wait_desc中列出的其他任何东西固定日志来解释的。不过,我知道情况并非如此。如果每10分钟进行一次日志备份,每个备份都有数百个MBs,那么这意味着在最后10分钟内必须有数百MB的活动发生。也许有一些你不知道的活动在不断地进行?
当然,我假设您没有对日志备份任务使用WITH NO_TRUNCATE或WITH 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;发布于 2011-08-04 19:00:53
在进行备份之前,事务日志文件中有多少数据?您可以通过DBCC或通过查看中的磁盘空间报告来看到这一点。日志备份有多大?
发布于 2011-08-26 10:42:23
你可能有太多的VLFs。运行DBCC并查看返回了多少行。如果有大量数据,请考虑缩小数据库的事务日志,并将其一步增长到适当的大小。
https://serverfault.com/questions/297665
复制相似问题