4 votes

SQL ne réduit pas un fichier journal même s'il a 99 % d'espace libre, ce qui donne l'erreur "tous les fichiers journaux logiques sont utilisés".

J'ai un fichier journal qui a atteint 32gig et rempli mon disque dur. J'ai donc fait une sauvegarde du journal des transactions, et maintenant, lorsque je fais "DBCC SQLPERF ( LOGSPACE )", il indique que 99% de mon fichier journal est un espace vide, ce qui est génial :

DBCC SQLPERF ( LOGSPACE )
Database Name   Log Size (MB)   Log Space Used (%)  Status
abc             32140.02        0.3069714       0

Maintenant je veux réduire le fichier (il ne devrait être que de quelques mégas ! !!), donc je le fais :

DBCC SHRINKFILE ( abc_log )

Dans les résultats de la requête dans SSMS, j'obtiens ce qui suit :

Results tab:
DbId    FileId  CurrentSize MinimumSize UsedPages   EstimatedPages
14  2   4113923 128 4113920 128

Et dans l'onglet "Messages", cette petite information :

Cannot shrink log file 2 (abc_log) because all logical log files are in use.
(1 row(s) affected)
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Qu'est-ce qui se passe ?

0 votes

Oui, il est en modèle de récupération "complet", ce qui est nécessaire, car il s'agit d'une base de données miroir.

1 votes

Et oui, j'ai dit à nos DBA de s'assurer qu'ils effectuent des sauvegardes quotidiennes du journal des transactions à l'avenir !

0 votes

De plus, DBCC OPENTRAN renvoie le message "Aucune transaction ouverte active".

3voto

SuperCoolMoss Points 1252

Attendez un moment de calme et faites une sauvegarde du journal des transactions, puis effectuez immédiatement le retrait.

0 votes

Ça n'a pas marché pour moi.

0 votes

Cela a fonctionné pour moi avec un avertissement. J'ai forcé une seule transaction, puis j'ai fait la sauvegarde du journal. Cela a réduit notre journal hors de contrôle de 200GB à 250MB.

1voto

Omer van Kloeten Points 6268

Vous n'avez pas mentionné la version de votre serveur SQL. Selon "Intentions du serveur SQL" , " (dans 7.0) ... Le rétrécissement physique ne peut se faire qu'à partir de la fin du journal, et la partie active n'est jamais rétractable. Pour remédier à cette situation, vous deviez entrer quelques transactions fictives après avoir tronqué le journal pour forcer la partie active du journal à se déplacer vers le début du fichier". La version ultérieure devrait le faire pour vous.

Le rétrécissement après une demi-heure peut être dû à l'auto-rétrécissement (avez-vous activé cette option ?). Il le fait toutes les 30 minutes.

0 votes

J'essayais de trouver la référence à ce sujet. Vous avez tout à fait raison.

1voto

icky3000 Points 4658

Je suis un mauvais administrateur SQL et j'ai l'habitude de changer la base de données en modèle de récupération simple, de la réduire, puis de la remettre en modèle complet. Je suppose que cela ne fonctionnerait pas dans une situation où vous comptez sur Full pour la mise en miroir.

0 votes

Je suis content de ne pas être le seul. J'ai essayé de réduire ce fichier de 3 Go de toutes les manières possibles et imaginables, mais rien ne fonctionne. De nombreuses sauvegardes du journal des transactions, avec et sans option de copie, j'ai essayé de réduire le fichier immédiatement après, un certain temps après, avec et sans mise à jour de la base de données, j'ai essayé de diminuer la taille initiale du journal, j'ai redémarré la base de données, rien ne fonctionne. Le fichier est bloqué à 3 Go alors qu'il a 95 % d'espace libre. Quelle perte de temps.

0voto

solarce Points 483

C'est bizarre, mais peut-être qu'une opération de la base de données était en cours à ce moment-là, même s'il n'y avait pas de "transaction" active ? Je ne connais pas assez bien le serveur SQL. Je doute que cela ait quelque chose à voir avec l'espace libre, de toute façon.

Vous aurez peut-être plus de chance avec des questions comme celle-ci sur serverfault.com que sur SU.

0voto

Nuno Maltez Points 143

J'ai un procédure dans mon site qui fait exactement cela.

Chaque fois que j'en ai besoin.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X