Recopilado de Internet, organizado y utilizado.
SQL2005 tiene más de 1 gigabyte de registros y, a veces, no se puede borrar. Entonces encontré este código.
A veces, el registro de limpieza no se borra en 1M. Ejecútelo varias veces. En circunstancias normales, se puede ejecutar una vez.
Me he encontrado con situaciones en las que tuve que ejecutarlo dos veces.
1 SELECCIONE @LogicalFileName = 'Test_log',
Test_log es el nombre lógico del registro.
4
5
6 -- ==============================================
7 -- Autor: luchador
8 -- Fecha de creación: 2009-3-15
9 - Descripción: borrar registro sql
10 -- ===============================================
11 CREAR PROCEDIMIENTO [dbo].[tools_ClearSqlLog]
12
13AS
14 COMENZAR
15
16 ESTABLECER SIN CUENTA EN
17 DECLARAR @LogicalFileName nombre del sistema,
18 @MaxMinutesINT,
19 @NuevoTamañoINT
20
21 SELECCIONE @LogicalFileName = 'Test_log',
22 @MaxMinutos = 1,
23 @NuevoTamaño = 1
veinticuatro
25 - Configuración/inicialización
26 DECLARAR @OriginalSize int
27 SELECCIONE @OriginalSize = tamaño DE sysfiles DONDE nombre = @LogicalFileName
28 SELECCIONE 'Tamaño original de ' + db_name() + ' LOG es ' +
29 CONVERTIR(VARCHAR(30),@OriginalSize) + ' 8K páginas o ' +
30 CONVERTIR(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
31 DE archivos sys
32 DONDE nombre = @NombreDeArchivoLógico
33
34 CREAR TABLA DummyTrans
35 (carácter DummyColumn (8000) no nulo)
36
37
38 DECLARAR @Contador INT,
39 @StartTime FECHA HORA,
40 @TruncLog VARCHAR(255)
41 SELECCIONAR @StartTime = GETDATE(),
42 @TruncLog = 'REGISTRO DE RESPALDO' + db_name() + 'CON TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 EJECUTIVO (@TruncLog)
46 -- Envuelva el tronco si es necesario.
47 MIENTRAS @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- el tiempo no ha expirado
48 Y @OriginalSize = (SELECCIONE el tamaño DE sysfiles DONDE nombre = @LogicalFileName)
49 Y (@OriginalSize * 8 /1024) > @NewSize
50 COMENZAR -- Bucle exterior.
51 SELECCIONAR @Contador = 0
52 MIENTRAS ((@Counter < @OriginalSize / 16) Y (@Counter < 50000))
53 COMENZAR -- actualizar
54 INSERTAR VALORES DummyTrans ('Registro de llenado')
55 BORRAR DummyTrans
56 SELECCIONAR @Contador = @Contador + 1
57FIN
58 EJECUTIVO (@TruncLog)
59FIN
60 SELECCIONAR 'Tamaño final de ' + db_name() + ' LOG es ' +
61 CONVERTIR(VARCHAR(30),tamaño) + ' 8K páginas o ' +
62 CONVERTIR(VARCHAR(30),(tamaño*8/1024)) + 'MB'
63 DE archivos sys
64 DONDE nombre = @NombreDeArchivoLógico
65
66 MESA DE CAÍDA DummyTrans
67 CONFIGURAR SIN CUENTA DESACTIVADA
68
69FIN
70
71