SQLServer 2005
Executei "dbcc SQLPerf(logspace)", fiz dois backups de log e executei "dbcc SQLPerf(logspace)" novamente. Nenhuma alteração de 48,55% usado, embora "dbcc opentran (foo)" diga que não há transações abertas ativas.
Isso significa que existem transações abertas inativas que estão impedindo que o espaço livre de log seja alterado após os backups?
Obrigado.
Além do espaço adicional marcado como "em uso" pelo SQLPERF, você pode ter espaço no log de transações que não está sendo liberado por outros motivos. Você provavelmente deve dar uma olhada na
log_reuse_wait_desc
coluna desys.databases
. Se disser NADA ou LOG_BACKUP , o que você está vendo provavelmente é o espaço ocupado pelo VLF atual. Se, no entanto, você estiver vendo outros valores, como DATABASE_MIRRORING ou REPLICATION , uma parte do seu log está aguardando para ser replicada para outra máquina. Os VLFs não são marcados como "livres" a menos que estejam completamente prontos para serem reutilizados. Isso pode significar uma transação aberta ou aguardar um backup de log (se estiver no modelo bulk-logged ou full recovery), mas também pode ser outras coisas.Pode ser que uma transação em execução em outro banco de dados retenha alguns objetos no
foo
banco de dados. Usandodbcc opentran(foo)
apenas relatórios sobre transações emfoo
, não em algum outro banco de dados.Além disso, pode ser útil ler esta descrição (de 2001 (!)) sobre como o DBCC SQLPERF (Logspace) relata a porcentagem usada em:
https://support.microsoft.com/en-us/kb/281879