Collecté sur Internet, organisé et utilisé.
SQL2005 contient plus de 1 Go de journaux et ne peut parfois pas être effacé. J'ai donc trouvé ce code.
Parfois, le journal de nettoyage n'est pas effacé à 1 M. Veuillez l'exécuter plusieurs fois. Dans des circonstances normales, il peut être exécuté une seule fois.
J'ai rencontré des situations où j'ai dû l'exécuter deux fois.
1 SELECT @LogicalFileName = 'Test_log',
Test_log est le nom logique du journal.
4
5
6 -- ==============================================
7 -- Auteur : combattant
8 -- Date de création : 2009-3-15
9 -- Description : effacer le journal SQL
10 -- ==============================================
11 CRÉER UNE PROCÉDURE [dbo].[tools_ClearSqlLog]
12
13AS
14 COMMENCER
15
16 RÉGLER AUCUN COMPTE SUR
17 DÉCLARE @LogicalFileName nom système,
18 @MaxMinutes INT,
19 @NewSizeINT
20
21 SELECT @LogicalFileName = 'Test_log',
22 @MaxMinutes = 1,
23 @NouvelleTaille = 1
vingt-quatre
25 -- Configuration/initialisation
26 DÉCLARER @OriginalSize int
27 SELECT @OriginalSize = taille FROM sysfiles WHERE nom = @LogicalFileName
28 SELECT 'Taille originale de ' + db_name() + ' LOG est ' +
29 CONVERTIR(VARCHAR(30),@OriginalSize) + ' 8 Ko pages ou ' +
30 CONVERTIR(VARCHAR(30), (@OriginalSize*8/1024)) + 'Mo'
31 DEPUIS les fichiers système
32 OÙ nom = @LogicalFileName
33
34 CRÉER UNE TABLE DummyTrans
35 (caractère DummyColumn (8000) non nul)
36
37
38 DÉCLARER @Counter INT,
39 @StartTime DATETIME,
40 @TruncLog VARCHAR(255)
41 SELECT @StartTime = GETDATE(),
42 @TruncLog = 'JOURNAL DE SAUVEGARDE' + nom_base() + 'AVEC TRUNCATE_ONLY'
43
44 DBCC SHRINKFILE (@LogicalFileName, @NewSize)
45 EXÉCUTION (@TruncLog)
46 -- Enveloppez la bûche si nécessaire.
47 WHILE @MaxMinutes > DATEDIFF (mi, @StartTime, GETDATE()) -- le temps n'a pas expiré
48 ET @OriginalSize = (SELECT size FROM sysfiles WHERE name = @LogicalFileName)
49 ET (@OriginalSize * 8/1024) > @NewSize
50 DÉBUT -- Boucle externe.
51 SELECT @Compteur = 0
52 PENDANT ( (@Counter < @OriginalSize / 16) ET (@Counter < 50000))
53 DÉBUT -- mise à jour
54 INSÉRER LES VALEURS DummyTrans (« Remplir le journal »)
55 SUPPRIMER DummyTrans
56 SELECT @Compteur = @Compteur + 1
57FIN
58 EXEC (@TruncLog)
59FIN
60 SELECT 'Taille finale de ' + db_name() + ' LOG est ' +
61 CONVERTIR(VARCHAR(30),taille) + ' 8 Ko pages ou ' +
62 CONVERTIR(VARCHAR(30),(taille*8/1024)) + 'Mo'
63 DEPUIS les fichiers système
64 OÙ nom = @LogicalFileName
65
66 TABLE DE DÉPÔT DummyTrans
67 DÉSACTIVER AUCUN COMPTE
68
69FIN
70
71