Venho criando um processo para percorrer todos os nossos bancos de dados e analisar a estrutura de log, fazer backup, encolher e redimensionar adequadamente, levando em consideração os requisitos operacionais e o dimensionamento/quantidade de VLF. Meu código está funcionando perfeitamente, mas encontrei algo no teste hoje que não esperava.
Eu tenho um banco de dados de bom tamanho com um log de 104 GB e cerca de 900 VLFs. Fiz backup do log e reduzi a quase nada durante um período de baixa atividade. Em seguida, comecei a aumentá-lo de volta ao tamanho original em iterações de 8 GB, mantendo os VLFs em torno de 512 MB. Durante o crescimento (em algum lugar entre 48 GB e 56 GB), fiquei curioso sobre a disponibilidade do banco de dados e comecei a executar SELECTS aleatórios em tabelas diferentes. Os resultados retornaram sem problemas. Em seguida, criei uma tabela no banco de dados e fiz um loop de várias inserções.
Fiquei surpreso quando o log continuou a crescer e a criação da tabela e as inserções foram concluídas sem problemas ou atrasos. Fiquei com a impressão de que o banco de dados seria de alguma forma bloqueado, bloqueando DDL e DML, até que o novo crescimento fosse concluído. Claro, considerando a natureza circular do log, posso ver como isso seria uma suposição falsa. Mas não consigo encontrar nada na web de uma forma ou de outra.
Alguém pode lançar alguma luz ou apontar-me na direção certa sobre o que está acontecendo? Obrigado!
Acabei resolvendo minha própria dúvida com o código abaixo: