Aus dem Internet gesammelt, geordnet und genutzt.
SQL2005 verfügt über mehr als 1 Gigabyte an Protokollen und kann manchmal nicht gelöscht werden. Also habe ich diesen Code gefunden.
Manchmal wird das Reinigungsprotokoll nicht auf 1M gelöscht. Bitte führen Sie es mehrmals aus. Unter normalen Umständen kann es einmal ausgeführt werden.
Ich bin auf Situationen gestoßen, in denen ich es zweimal ausführen musste.
1 SELECT @LogicalFileName = 'Test_log',
Test_log ist der logische Name des Protokolls.
4
5
6 -- ===========================================
7 – Autor: Kämpfer
8 – Erstellungsdatum: 15.03.2009
9 – Beschreibung: SQL-Protokoll löschen
10 -- ===========================================
11 PROZEDUR ERSTELLEN [dbo].[tools_ClearSqlLog]
12
13AS
14 ANFANG
15
16 NOCOUNT EINSTELLEN
17 DECLARE @LogicalFileName Systemname,
18 @MaxMinutes INT,
19 @NewSizeINT
20
21 SELECT @LogicalFileName = 'Test_log',
22 @MaxMinutes = 1,
23 @NewSize = 1
vierundzwanzig
25 – Setup/Initialisierung
26 DECLARE @OriginalSize int
27 SELECT @OriginalSize = size FROM sysfiles WHERE name = @LogicalFileName
28 SELECT 'Originalgröße von ' + db_name() + ' LOG ist ' +
29 CONVERT(VARCHAR(30),@OriginalSize) + ' 8K Seiten oder ' +
30 CONVERT(VARCHAR(30),(@OriginalSize*8/1024)) + 'MB'
31 AUS sysfiles
32 WHERE name = @LogicalFileName
33
34 TABELLE DummyTrans ERSTELLEN
35 (DummyColumn char (8000) nicht null)
36
37
38 DECLARE @Counter INT,
39 @StartTime DATETIME,
40 @TruncLog VARCHAR(255)
41 SELECT @StartTime = GETDATE(),
42 @TruncLog = 'BACKUP LOG ' + db_name() + ' WITH TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 EXEC (@TruncLog)
46 – Wickeln Sie den Stamm ggf. ein.
47 WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) – Zeit ist nicht abgelaufen
48 AND @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
49 UND (@OriginalSize * 8 /1024) > @NewSize
50 BEGIN – Äußere Schleife.
51 SELECT @Counter = 0
52 WHILE ((@Counter < @OriginalSize / 16) AND (@Counter < 50000))
53 BEGIN – Aktualisierung
54 INSERT DummyTrans VALUES ('Fill Log')
55 DummyTrans löschen
56 SELECT @Counter = @Counter + 1
57ENDE
58 EXEC (@TruncLog)
59ENDE
60 SELECT 'Endgültige Größe von ' + db_name() + ' LOG ist ' +
61 CONVERT(VARCHAR(30),size) + ' 8K Seiten oder ' +
62 CONVERT(VARCHAR(30),(size*8/1024)) + 'MB'
63 AUS sysfiles
64 WHERE name = @LogicalFileName
65
66 DROP TABLE DummyTrans
67 NOCOUNT AUSSETZEN
68
69ENDE
70
71