Oii, Vinicius! Tudo bem?
Entendo, o tamanho do log pode ser limitado devido a algumas configurações personalizadas. Por exemplo, caso o tamanho máximo do log estiver configurado para 100MB, o log não irá crescer além desse limite.
Caso você queira verificar o tamanho atual do log de transações, execute o comando:
DBCC SQLPERF(LOGSPACE)
E nessa documentação você pode aprofundar um pouco no tema.
Sobre o comando SHRINKDATABASE
, ele tenta reduzir o tamanho do arquivo de banco de dados liberando o espaço não utilizado. Porém, se o arquivo estiver quase cheio ou se o espaço livre não estiver disponível no final do arquivo, o comando não poderá reduzir o tamanho do arquivo. Isso pode ser o motivo pelo qual você está vendo a mensagem de erro "DBCC SHRINKDATABASE: ID do arquivo 1 da ID de banco de dados 8 ignorada porque não há espaço livre suficiente no arquivo para recuperação".
Uma possível solução seria liberar algum espaço no arquivo de banco de dados antes de executar o comando. Isso pode ser feito, por exemplo, excluindo dados desnecessários ou movendo alguns dados para outro arquivo ou banco de dados. Nese artigo, contém o tutorial que você pode seguir.
Outro ponto que é interessante abordar, é que o espaço não esteja sendo liberado porque está retido para futuras transações.
Nesse caso, é interessante tentar, também, o comando:
DBCC SHRINKFILE
No lugar de SHRINKDATABASE
. O comando SHRINKFILE
permite especificar o tamanho desejado para o arquivo e pode ser mais eficaz para liberar espaço.
Segue um exemplo de sintaxe do comando SHRINKFILE
:
DBCC SHRINKFILE (NomeDoArquivo, TamanhoDesejado)
Espero ter ajudado com a sua dúvida. Realize os testes e veja se o código comporta-se como esperado.
Qualquer dúvida, conte conosco no fórum.
Bons estudos, Vinicius!