Question

Notre serveur SQL Server 2000 me signale donc l'erreur "Le fichier journal de la base de données est saturé. Sauvegardez le journal des transactions de la base de données pour libérer de l’espace. "

Comment résoudre ce problème sans supprimer le journal, comme certains sites l'ont déjà mentionné?

Informations complémentaires: Activer AutoGrowth est activé, avec une augmentation de 10% et une limitation à 40 Mo.

Était-ce utile?

La solution

Scott, comme vous l'avez deviné: tronquer le journal est une mauvaise chose si vous tenez à vos données.

Les vidéos suivantes, gratuites, vous aideront à voir exactement ce qui se passe et vous montreront comment résoudre le problème sans tronquer les journaux. (Ces vidéos expliquent également pourquoi il s’agit d’un hack si dangereux et pourquoi vous avez raison de chercher une autre solution.)

Ensemble, ces vidéos vous aideront à comprendre exactement ce qui se passe et vous indiqueront si vous souhaitez passer à la récupération SIMPLE ou envisager de modifier réellement vos routines de sauvegarde. Il existe également des vidéos supplémentaires expliquant comment configurer vos sauvegardes pour garantir la disponibilité tout en gérant la taille et la croissance des fichiers journaux.

Autres conseils

Pour simplement le vider:

backup log <dbname> with truncate_only  

Pour le sauvegarder quelque part:

backup log <dbname> to disk='c:\somefile.bak'

Si vous n'avez pas vraiment besoin d'un historique transactionnel, essayez de définir le mode de récupération de base de données sur simple.

Sauvegardez régulièrement vos journaux de base de données si vous avez besoin de récupérer jusqu’à la minute, d’autres choses amusantes telles que la livraison de journaux à l’avenir, ou de définir la base de données en mode simple et de réduire le fichier de données.

NE PAS copier, renommer ou supprimer le fichier .ldf, cela endommagerait votre base de données. Après la récupération, les données pourraient être dans un état incohérent, ce qui les rendrait invalides.

Je ne pense pas que renommer ou déplacer le fichier journal fonctionnera tant que la base de données sera en ligne.

La chose la plus simple à faire, IMO, consiste à ouvrir les propriétés de la base de données et à la basculer vers un modèle de récupération simple. réduisez ensuite la base de données, puis revenez en arrière et définissez la base de données sur Modèle de récupération complète (ou le modèle dont vous avez besoin).

La modification du mode de journalisation oblige SQL Server à définir un point de contrôle dans la base de données, après quoi la réduction de la base de données libérera l'espace disponible.

Mon ami qui a déjà fait face à cette erreur recommande:

Essayez

  • Sauvegarde de la base de données. Le plan de maintenance inclut la troncature de ces fichiers.
  • Essayez également de changer le de la base de données en Simple (au lieu de Complet par exemple)

Cause: Le journal des transactions s’enfle lorsque les événements sont consignés (vous avez peut-être un certain nombre de transactions en échec et en train d’être annulées… ou un pic soudain de transactions sur le serveur)

Vous pouvez prendre une copie du journal des transactions, puis tronquer le fichier journal, comme le suggère le message d'erreur.

Si l'espace disque est saturé et que vous ne pouvez pas copier le journal sur un autre ordinateur via le réseau, connectez un lecteur via USB et copiez-le de cette façon.

Vous avez la réponse à votre question: sauvegardez le journal, il sera réduit. Préparez un plan de maintenance pour sauvegarder régulièrement la base de données et n'oubliez pas de sélectionner "Sauvegarder le journal des transactions". Ainsi, vous resterez petit.

S'il s'agit d'un environnement non , utilisez

.
dump tran <db_name> with no_log;

Une fois cette opération terminée, réduisez le fichier journal pour libérer de l'espace disque. Enfin, basculez le mode de récupération de base de données sur simple.

Dès que vous effectuez une sauvegarde complète de la base de données et que celle-ci n'utilise pas le modèle de récupération simple, SQL Server conserve un enregistrement complet de toutes les transactions jamais effectuées sur la base de données. Ainsi, en cas de défaillance catastrophique du fichier de données, vous pouvez restaurer le point de défaillance en sauvegardant le journal et, une fois que vous avez restauré une ancienne sauvegarde de données, restaurez le journal pour relire le fichier perdu. transactions.

Pour éviter cette accumulation, vous devez sauvegarder le journal des transactions. Vous pouvez également rompre la chaîne au point actuel à l’aide des options TRUNCATE_ONLY ou NO_LOG de BACKUP LOG.

Si vous n'avez pas besoin de cette fonctionnalité, définissez le modèle de récupération sur Simple.

Mon cher ami, il est très important pour un administrateur de base de vérifier son fichier journal assez fréquemment. Parce que si vous n'y prêtez pas beaucoup d'attention un jour, vous obtiendrez cette erreur.

Pour cela, vous devez périodiquement reprendre en place afin que le fichier journal ne soit pas confronté à une telle erreur.

Sinon, la suggestion ci-dessus est tout à fait juste.

Renommez-le. par exemple:
old-log-16-09-08.log

Ensuite, le serveur SQL peut utiliser un nouveau serveur vide.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top