Só para ficar claro que estamos na mesma página, você está dizendo que o cada backup de log é centenas de MBs, não que os arquivos de log (LDFs) sejam grandes. O mais atrasado é explicado geralmente pelo registro que está sendo fixado pela replicação, espelhando, uma transação ativa esquecida do usuário ou qualquer outra coisa como alistado em sys.databases.log_reuse_wait_desc
. No entanto, eu entendo que não é o caso. Se os backups de log realizados a cada 10 minutos tiverem centenas de MBs, isso significa que deve haver centenas de MB de atividade nos últimos 10 minutos. Talvez haja alguma atividade acontecendo constantemente, da qual você não está ciente?
É claro que eu suponho que você não use a sintaxe WITH NO_TRUNCATE
ou WITH COPY_ONLY
para a tarefa de backup de log.
As três perguntas a seguir devem dar uma ideia sobre o que é o preenchimento do registro:
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;