Hoje vou mostrar como usar o SHRINK e diminuir o tamanho do log file de uma database no SQL Server.
Quando muitas operações começam a executar no SQL Server, os arquivos de log (ldf) costumam aumentar de tamanho.
Se o tamanho ficar muito grande e lotar o espaço em disco, isso pode ocasionar erros e falhas nos procedimentos no SQL Server.
Para corrigir isso, o ideal é rodar um Shrink diminuindo o arquivo de logs, e depois voltando ao normal, com os seguintes comandos.
ALTER DATABASE BaseDeDados SET RECOVERY SIMPLE; GO DBCC SHRINKFILE (BaseDeDados_Log, 1); GO ALTER DATABASE BaseDeDados SET RECOVERY FULL; GO
Agora, caso você tenha espelhamento e cópia em outro servidor, é necessário também suspender isso e depois retomar, conforme abaixo.
ALTER DATABASE BaseDeDados SET PARTNER SUSPEND; ALTER DATABASE BaseDeDados SET RECOVERY SIMPLE; GO DBCC SHRINKFILE (BaseDeDados_Log, 1); GO ALTER DATABASE BaseDeDados SET RECOVERY FULL; ALTER DATABASE BaseDeDados SET PARTNER RESUME; GO
Bom pessoal, por hoje é só.
Abraços e até a próxima.
valeu ! muito obrigado pelos ensinamentos !
Opa, eu que agradeço pelo comentário Julio.
Grande abraço.
Bom dia Dan_Atilio, me desculpe a pergunta, mas vai lá. Fazendo o Shirink no LOG corre algum risco de zuar o DATABASE?
Valeu!
Bom dia Roberto. Acha, não precisa se desculpar.
Então, até onde sei não, como é um log file (ldf), ele fica separado da database file (mdf).
O que você vai fazer, é perder os logs das operações apenas.
Obrigado por responder. Fiz deu tudo certo. Quanto tempo acha que devo guardar o backup do log? Parei o SQL e fiz uma cópia do LDF. Mas em algum tempo ele perde a função, não?
No caso, ele serve para você avaliar logs e se acontecer algum problema com o mdf, você conseguir ver se tem algum log nele apontando algum problema.
Então assim, se você faz backup do mdf, o ideal é manter o ldf junto.
Boa tarde a todos,
@Dan, pode-me explicar para que ser o “1” dentro dos parentises na linha 4?
Obrigado
Bom dia Vitor.
No caso, o 1 é para ficar com 1 MB de tamanho o arquivo de log.
Já agora, posso correr o script como um ficheiro .bat ??
Via .bat não sei te dizer.
Mas você poderia agendar pelo próprio SQL, segue um link explicando: https://terminaldeinformacao.com/2017/11/01/como-agendar-um-processo-sql-server/ , veja na parte da criação da etapa.