Manutenção de bases de Dados SQL Server

Manutenção de Bases de Dados SQL Server

Reduzindo logs de transação em bases de dados SQL Server

O que são Logs de Transação?
 
  Todo banco de dados do SQL Server tem um log de transações que registra todas as transações e modificações feitas no banco de dados a cada transação. Esse deve ser
truncado regularmente para impedir o preenchimento  total do arquivo de log. No entanto, alguns fatores podem atrasar o truncamento de log, portanto, o monitoramento do tamanho do log
é importante. Algumas operações podem ser registradas em um log mínimo para reduzir o impacto no tamanho do log de transações.

  O log de transações é um componente crítico do banco de dados e, se houver uma falha do sistema, será necessário que o log de transações retorne seu banco de dados a um estado 
consistente. O mesmo nunca deve ser excluído ou movido a menos que você compreenda plenamente as consequências disso.
 
O truncamento de log libera espaço no arquivo de log para ser reutilizado pelo log de transações. Ele é essencial para impedir o preenchimento do log, além de excluir arquivos de log virtuais
inativos do log de transações lógicas de um banco de dados do SQL Server, liberando espaço no log lógico para reutilização pelo log de transações físicas. Se um log de transações nunca foi
truncado, eventualmente, ele preencherá todo o espaço em disco alocado para seus arquivos de log físicos.
 
Reduzindo o arquivo de log de transação no SQL 2008
 
Acesse o banco de dados utilizando o SQL  Server Management Studio Express,  por exemplo, e modifique as propriedades da base de dados a qual deseja realizar a “redução do log de transação”.
 
                                                   Figura 1 - Acessando as propriedades da base de logs
 
Agora acesse a página (page)  opções  (option) e altere o valor do “modo de recuperação” (recovery model) para o valor Simples (simple).
 
                 
                                           Figura 2 - -Alterando o modo de recuperação da base de dados de log de transação 
 
Observação: O padrão do Recovery model é "FULL". Não realize nenhuma alteração além da descrita até agora!
 
Até agora a base de log continua com o mesmo tamanho. Com as configurações já realizadas informamos que  a “Base de dados de log”  está configurada  para não reter o log  de transações
durante a desfragmentação/truncamento (Shrink) que será o próximo passo. Para desfragmentar a base de log, assim liberando o espaço em disco e permitindo que os sistemas possam voltar
à operação, faça os seguintes passos:
 
                       
                                             Figura 3 - Realizando a desfragmentação/ truncamento de dados na base de log
 
 
 Nota
 
Antes de iniciar este procedimento é recomendado:
•      Faça um “backup completo” da “base de dados”, referente a esta base de logs.
•      Certifique-se que não existem processamentos sendo executados nas bases de dados (importação de ligações, relatórios, eliminação de ligações...).
 
 
Quando o formulário de truncamento (shrink) for apresentado, clique apenas em OK. 
 
Figura 4 - Realizando o shrink da base de dados, juntamente com a base de log. 
 
Este procedimento é relativamente rápido. Vamos analisar o comportamento antes do procedimento descrito neste artigo: 
 
                         
                                              Figura 5 - Tamanho das bases de dados antes das alterações e Shrink da base de log
 
                               
                                                                               Figura 6 - Redução significativo do tamanho da base de Log de transações
 
Realizando a redução via comandos SQL
 
Muitas vezes não “temos a mão” o Management Studio Express. Mas podemos diminuir o log de transação através de instruções SQL utilizando o Utilitário da Diretion “ExecutaSQL.exe”. 
 
 
 
 
 Nota
 
Antes de iniciar este procedimento é recomendado:
•       Faça um “backup completo” da “base de dados”, referente a esta base de logs.
•       Certifique-se que não existem processamentos sendo executados nas bases de dados (importação de ligações, relatórios, eliminação de ligações...).
 
 
Para executar a redução de dados leia atentamente as instruções a seguir:
 
SQL Server 2005
 
USE  [NomeBase]
GO
BACKUP LOG  [NomeBase]  WITH TRUNCATE_ONLY 
DBCC SHRINKFILE  ([NomeBase_log], 1)  
 
SQL Server 2008
 
USE  [NomeBase];
GO
ALTER DATABASE  [NomeBase]
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE  ([NomeBase_log], 1);
GO
ALTER DATABASE [NomeBase]
SET RECOVERY FULL;
GO 
 
A seguir  um exemplo utilizando as bases do CallManager em um SQL 2008 como demonstração:
 
USE [CM2012EE-0800-0100000005];
GO
ALTER DATABASE [CM2012EE-0800-0100000005]
SET RECOVERY SIMPLE;
GO
DBCC SHRINKFILE ([CM2012EE-0800-0100000005_Log], 1); GO
ALTER DATABASE [CM2012EE-0800-0100000005]
SET RECOVERY FULL;
GO
 
 
 
   Nota
 
Note que no exemplo o utilizamos a base de dados CM2012EE-08000100000005, e alteramos o modo de recuperação para SIMPLE, executamos o shrink (redução da base) e retornamos o modo de recuperação para FULL novamente.
 

Add Feedback