10 votes

Comment réduire la taille d'un fichier journal SQL Server ?

Je n'arrive pas à trouver comment réduire la taille du fichier ldf des bases de données.

Le DBA dit que je devrais utiliser backup log dbname with truncate_only

Et bien que cela semble s'être exécuté correctement dans SQL Query Analyzer, le fichier ldf fait toujours plus de 2 Go.

**La base de données en question est une base de données qui se trouve sur mon ordinateur portable et que j'utilise uniquement pour des processus de développement. Le fichier journal a augmenté à un point tel qu'il semblait provoquer un disque plein. Il n'y a aucun risque pour la production. Je comprends que la méthode décrite dans la question que j'ai posée et la réponse que j'ai acceptée sont risquées dans un environnement de production.

0 votes

Cette question fait-elle double emploi ?

0 votes

J'ai cherché et je n'en ai trouvé qu'une seule qui posait une question sur le moment où le SHRINKFILE échoue. Sur le moment, cela n'avait pas de sens, alors j'ai posté cette question. J'ai envisagé de supprimer la question, mais je me suis dit que d'autres personnes se trouveraient dans la même situation. Si vous pouvez trouver une question en double (qui pose la même question, et non une question similaire), je serai heureux de supprimer celle-ci.

0 votes

Il y a environ 8 réponses sur la première page d'une recherche qui l'incluent mais je suppose que vous devez savoir ce que vous cherchez. Je le vois si régulièrement comme partie d'une réponse que je suis surpris qu'il n'ait pas été demandé de manière aussi directe.

11voto

BradC Points 2200

Oh, l'horreur ! S'il vous plaît, arrêtez de dire aux gens qu'ils doivent réduire leurs fichiers journaux !

Si vous vous êtes retrouvé dans cette situation, alors l'un des cas suivants est extrêmement probable :

  1. Votre base de données est en mode de récupération complète, alors qu'elle devrait être en mode simple.
  2. Votre base de données est en mode de récupération complète, et vous devriez faire des sauvegardes régulières des journaux.
  3. Votre base de données est en mode de récupération complète, et vos sauvegardes de journaux échouent pour une raison quelconque.
  4. Vous exécutez des transactions très importantes qui font exploser le fichier journal.

La réponse à chacune de ces questions est la suivante :

Si (1), alors passer la base de données en mode simple
Si (2), programmez des sauvegardes régulières des journaux.
Si (3), alors corrigez vos sauvegardes de journaux programmées.
Si (4), alors ne le faites pas :) Travaillez plutôt par petits lots.

Notez qu'AUCUNE d'entre elles ne nécessite l'utilisation de la commande (obsolète) "backup log dbname with truncate_only".

Au lieu de cela, une fois que vous avez fait clair le fichier journal en utilisant l'une des techniques ci-dessus, puis réduire le journal (maintenant vide) avec :

DBCC SHRINKFILE ('log logical name', 2000)

Spécifiez toujours une taille finale raisonnable, sinon il se réduira à presque 0, et la prochaine fois qu'il sera nécessaire, il devra prendre le temps de grandir.

4voto

Mani Points 146

Après avoir effectué la "sauvegarde avec truncate_only", vous devez lancer la commande suivante pour réduire le nombre d'ordinateurs.

dbcc SHRINKFILE (logfilename,shrink_tosize)

Par exemple

dbcc SHRINKFILE (mydatabase_Log,512)

3voto

Brian Knight Points 1165

Le script que vous avez écrit ci-dessus marquera le contenu du journal pour le réutiliser. Faites suivre ce script par :

USE <database>;

DBCC SHRINKFILE (<log logical file name>)

Cela va le rétrécir pour vous.

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