Eu tenho um banco de dados que possui um arquivo de dados de 350 MB (.mdf) e um arquivo de log de 4,9 GB (.ldf). O modelo de recuperação está definido como FULL
.
Quando tento reduzir o arquivo de log, ele não está diminuindo.
Eu sei que reduzir um banco de dados não é bom e não deve ser feito. Mas ainda estou tentando fazer isso para reduzir o arquivo de log.
Quando eu corri
DBCC SQLPerf(logspace)
Descobri que o tamanho do log é 4932 MB e o espaço usado é 98,76% !
Então eu tentei este comando
USE <databasename>;
DBCC loginfo;
Agora quase todos os VLFs são "status 2", o que significa que todos estão em uso.
Eu tentei fazer um backup de log e encolher o arquivo de log. Encolher não reduziu o tamanho.
Mudei o modelo de recuperação para SIMPLE
e tentei diminuir novamente, mas isso também não ajudou.
Eu verifiquei as transações abertas
DBCC opentran (database);
e descobriu que nenhuma transação está aberta agora.
O que está me impedindo de diminuir o arquivo de log? Como posso resolver isso?
fonte
log_reuse_wait_desc
deuACTIVE_TRANSACTION
. Assim que a transação foi concluída, o psiquiatra funcionou bem.As etapas para reduzir o log serão
Faça log de transação de backup por SSMS ou T-SQL e execute uma redução
comandos para SSMS estão sob as tarefas se você clicar com o botão direito do mouse no nome do banco de dados
Você provavelmente terá que fazer isso várias vezes
Se houver uma transação ou trabalho bloqueando a ação, use o Monitor de atividades para identificar e eliminá-lo, ou use o monitor de atividades do SQL Agent para finalizar o trabalho.
fonte: http://support.microsoft.com/kb/907511
fonte
Leia Como reduzir o log do SQL Server para obter uma explicação de como a natureza circular do log pode impedir a redução após o truncamento. É possível que você registre o último ponto de LSN em um VLF que esteja na cauda do LDF. Contador intuitivamente, você deve avançar o log, gerando gravações de log, para permitir que ele diminua.
fonte
Você precisa criar um backup primeiro, dependente do modelo de backup configurado para o banco de dados antes de poder reduzir o banco de dados.
Você pode tentar executar isso:
Ou você pode fazer isso no SSMS e usar as ferramentas gráficas disponíveis (consulte aqui para obter detalhes: http://msdn.microsoft.com/en-us/library/ms187510.aspx )
Depois de fazer backup do seu banco de dados, você pode compactá-lo. No entanto, diminuir o banco de dados não é uma boa ideia, pois ocorrerá uma fragmentação intensa do índice e a pesquisa de dados ficará lenta.
Espero que isto ajude.
fonte
Descobri que preciso executar 2 ou 3 backups do banco de dados e do log de transações para que o log de transações reduza de tamanho. Eu tenho um banco de dados que foi criado com o modelo de recuperação total. Todas as noites, ele realiza backups do banco de dados e do log de transações, mas inevitavelmente o log de transações parece crescer continuamente ao longo de duas a três semanas. Quando o espaço em disco restante chegar a 1 GB, verei que o log de transações é de aproximadamente 30 GB. Segui as etapas recomendadas pela Microsoft e após a quarta ou quinta iteração de backup do banco de dados e do log de transações, o log de transações finalmente liberará seu espaço extra e diminuirá. Depois volto e apago os vários backups que criei.
fonte
Minha solução para a replicação que está bloqueando o arquivo de log reduzido é:
No meu caso, funcionou. Depois de trazer o DB online, o log foi criado automaticamente e seu tamanho era de 512kb em vez de 70GB. Mas isso é apenas uma solução alternativa. O problema raiz não foi resolvido. No meu caso, estamos usando replicação.
fonte