Dicas sobre desenvolvimento de software, gestão e tributações

Rede Social

23 de junho de 2020

Sql: Limpeza no HD (LogFile)


Uma boa forma de conseguir espaço no HD é fazer uma limpeza nos arquivos de log do SQL Server, isso acontece muito com os desenvolvedores que tem banco de dados de testes e ficam executando muitos comandos o tempo todo.
O arquivo de log nesses casos vai inflando e muitas vezes não é tão útil porque foram apenas testes então reduzir a quantidade de informações dele não representará grandes perdas.

Lembrando que isso pode ser aplicado à qualquer banco, não apenas de testes, mas tenha cuidado o arquivo de log tem informações importantes caso precise por exemplo executar um procedimento de manutenção ou análise de dados.

Primeiro vamos ver qual o tamanho do arquivo de log dos bancos de dados que você tem.

WITH FS
AS
(
    SELECT DATABASE_ID, TYPE, SIZE * 8.0 / 1024 SIZE, physical_name
    FROM SYS.MASTER_FILES
)
SELECT
    NAME AS NOMEDOBANCO,
    (SELECT SUM(SIZE) FROM FS WHERE TYPE = 0 AND FS.DATABASE_ID = DB.DATABASE_ID) DATAFILESIZEMB,
    (SELECT SUM(SIZE) FROM FS WHERE TYPE = 1 AND FS.DATABASE_ID = DB.DATABASE_ID) LOGFILESIZEMB,
 (SELECT PHYSICAL_NAME FROM FS WHERE TYPE = 1 AND FS.DATABASE_ID = DB.DATABASE_ID)
FROM SYS.DATABASES DB

Esse comando vai mostrar o nome do banco, o tamanho do banco, o tamanho do log e o local do arquivo ldf.

Compare o tamanho do banco com o tamanho do log para decidir qual banco vai querer executar o procedimento. Muitas vezes os arquivos de log ficam bem maiores que o próprio banco.

USE MEU_BANCO_DE_DADOS

ALTER DATABASE MEU_BANCO_DE_DADOS
SET RECOVERY SIMPLE;
GO

DECLARE @NOMELOG varchar(500) = (SELECT DISTINCT name FROM sys.master_files WHERE type = 1 AND name LIKE '%MEU_BANCO_DE_DADOS%')
DBCC SHRINKFILE (@NOMELOG, 100);
GO

ALTER DATABASE MEU_BANCO_DE_DADOS
SET RECOVERY FULL;
GO

Esse comando vai limpar o arquivo de log até chegar a próximo dos 100 MB por causa desse comando SHRINKFILE (@NOMELOG, 100); caso queira outro valor é só trocar de 100 para o que desejar.
Onde estiver MEU_BANCO_DE_DADOS substitua pelo banco de dados que você escolheu.

0 comentários:

Postar um comentário