Coletado da Internet, organizado e utilizado.
O SQL2005 possui mais de 1 gigabyte de logs e às vezes não pode ser limpo. Então eu encontrei esse código.
Às vezes, o log de limpeza não é limpo em 1M. Execute-o várias vezes. Em circunstâncias normais, pode ser executado uma vez.
Já encontrei situações em que tive que executá-lo duas vezes.
1 SELECIONE @LogicalFileName = 'Test_log',
Test_log é o nome lógico do log.
4
5
6 -- ============================================
7 – Autor: lutador
8 -- Data de criação: 15/03/2009
9 -- Descrição: limpar log sql
10 -- ============================================
11 CRIAR PROCEDIMENTO [dbo].[tools_ClearSqlLog]
12
13AS
14 COMEÇAR
15
16 DEFINIR NOCOUNT ON
17 DECLARE @LogicalFileName nome do sistema,
18 @MaxMinutes INT,
19 @NewSizeINT
20
21 SELECIONE @LogicalFileName = 'Test_log',
22 @MaxMinutos = 1,
23 @NovoTamanho = 1
vinte e quatro
25 -- Configurar/inicializar
26 DECLARE @OriginalSize int
27 SELECT @OriginalSize = tamanho FROM sysfiles WHERE nome = @LogicalFileName
28 SELECT 'Tamanho original de ' + nome_bd() + ' LOG é ' +
29 CONVERT(VARCHAR(30),@OriginalSize) + ' 8K páginas ou ' +
30 CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
31 DE arquivos sys
32 ONDE nome = @LogicalFileName
33
34 CRIAR TABELA DummyTrans
35 (caractere DummyColumn (8000) não nulo)
36
37
38 DECLARE @Counter INT,
39 @StartTime DATETIME,
40 @TruncLog VARCHAR(255)
41 SELECIONE @StartTime = GETDATE(),
42 @TruncLog = 'LOG DE BACKUP' + nome_bd() + 'COM TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 EXEC (@TruncLog)
46 -- Embrulhe o log se necessário.
47 WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) – o tempo não expirou
48 AND @OriginalSize = (SELECIONE tamanho FROM sysfiles WHERE nome = @LogicalFileName)
49 E (@OriginalSize * 8/1024) > @NewSize
50 BEGIN – Loop externo.
51 SELECIONE @Contador = 0
52 ENQUANTO (@Counter < @OriginalSize / 16) E (@Counter < 50000))
53 COMEÇAR - atualização
54 INSERIR VALORES DummyTrans ('Fill Log')
55 EXCLUIR DummyTrans
56 SELECIONE @Contador = @Contador + 1
57 FIM
58 EXEC (@TruncLog)
59 FIM
60 SELECT 'Tamanho final de ' + nome_bd() + ' LOG é ' +
61 CONVERT(VARCHAR(30),tamanho) + ' 8K páginas ou ' +
62 CONVERT(VARCHAR(30),(tamanho*8/1024)) + 'MB'
63 DE arquivos sys
64 ONDE nome = @LogicalFileName
65
66 TABELA DE QUEDA DummyTrans
67 DEFINIR NOCOUNT OFF
68
69 FIM
70
71