Résolution des problèmes en cas de journal des transactions saturé (erreur 9002)

Mis à jour : 14 avril 2006

Cette rubrique décrit les réactions possibles et émet quelques suggestions qui vous aideront à éviter cette situation dans le futur. Lorsque le journal des transactions est saturé, le moteur de base de données SQL Server émet une erreur 9002. Le journal peut être renseigné lorsque la base de données est en ligne ou en cours de récupération. Si le journal se remplit tandis que la base de données est en ligne, cette dernière reste en ligne et peut uniquement être lue mais pas mise à jour. Si le journal se remplit en cours de récupération, le moteur de base de données marque la base de données en tant que RESOURCE PENDING (ressource en attente) Dans les deux cas, une intervention de l'utilisateur est nécessaire pour libérer de l'espace disque.

Réagir à un journal des transactions complet

La réponse adéquate à un journal des transactions saturé dépend en partie de la ou des conditions qui ont motivé le remplissage du journal. Pour découvrir les raisons qui empêchent de tronquer le journal dans une situation donnée, utilisez les colonnes log_reuse_wait et log_reuse_wait_desc de l'affichage catalogue sys.database. Pour plus d'informations, consultez sys.databases (Transact-SQL). Pour obtenir des descriptions des facteurs susceptibles de retarder la troncation du journal, consultez Facteurs susceptibles de retarder la troncation de journal.

ms175495.note(fr-fr,SQL.90).gifImportant :
Si la base de données était en mode de récupération lorsque l'erreur 9002 s'est produite, récupérez la base de données à l'aide de l'instruction ALTER DATABASE nom_base_de_données SET ONLINE après avoir résolu le problème.

D'autres solutions possibles en cas de saturation du journal des transactions sont les suivantes :

  • Sauvegarde du journal.
  • Libération de l'espace disque pour que le journal puisse croître automatiquement.
  • Déplacement du fichier journal vers une unité dotée d'un espace disque suffisant.
  • Augmentation de la taille du fichier journal.
  • Ajout d'un fichier journal sur un autre disque.
  • Achèvement ou suppression d'une transaction longue.

Ces solutions sont abordées dans les sections qui suivent. Optez pour une solution adaptée à votre situation.

ms175495.note(fr-fr,SQL.90).gifRemarque :
Toute troncation forcée du journal brise la séquence de journaux de transactions consécutifs et laisse votre base de données vulnérable jusqu'à la prochaine sauvegarde de base de données complète. C'est pour cette raison que l'option TRUNCATE_ONLY sera supprimée de l'instruction BACKUP dans une prochaine version de SQL Server. Évitez de l'employer pour de nouvelles tâches de développement et pensez éventuellement à modifier les applications qui l'utilisent actuellement.

Sauvegarde du journal

Si vous travaillez en mode de restauration complète ou en mode de récupération utilisant les journaux de transactions et si vous n'avez pas sauvegardé récemment le journal des transactions, la création d'une sauvegarde est ce qui empêche la troncation du journal. Si le journal n'a jamais été sauvegardé, vous devez créer deux sauvegardes du journal pour autoriser le moteur de base de données à le tronquer à l'endroit exact de la dernière sauvegarde. Le fait de tronquer le journal permet de libérer de l'espace pour les nouveaux enregistrements de ce dernier. Pour empêcher le journal de se remplir à nouveau, effectuez les sauvegardes régulièrement.

Pour créer une sauvegarde du journal des transactions

ms175495.note(fr-fr,SQL.90).gifImportant :
Si la base de données est endommagée, consultez Sauvegardes de fichier journal après défaillance.

Libération d’espace disque

Vous pouvez libérer de l'espace sur le disque où est stocké le fichier journal des transactions de la base de données en supprimant ou en déplaçant d'autres fichiers. Ceci permet au système de récupération d'augmenter automatiquement la taille du fichier journal.

Déplacement du fichier journal vers un autre disque

Si vous ne pouvez pas libérer suffisamment d'espace disque sur le lecteur où le fichier journal se trouve actuellement, essayez de déplacer ce fichier sur une autre unité disposant d'espace suffisant.

ms175495.note(fr-fr,SQL.90).gifImportant :
Les fichiers journaux ne doivent jamais être placés sur des systèmes de fichiers compressés.

Pour déplacer un fichier journal

Augmentation de la taille d'un fichier journal

Si le disque du journal dispose d'espace libre, vous pouvez augmenter la taille du fichier journal.

Pour augmenter la taille du fichier

Si la fonctionnalité de croissance automatique est désactivée, la base de données est en ligne et l'espace disque disponible est suffisant, effectuez l'une des opérations suivantes :

  • Augmentez manuellement la taille du fichier pour générer un seul incrément de croissance.
  • Activez la croissance automatique à l'aide de l'instruction ALTER DATABASE pour définir un incrément de croissance différent de zéro pour l'option FILEGROWTH.
ms175495.note(fr-fr,SQL.90).gifRemarque :
Dans les deux cas, si la limite de taille actuelle est atteinte, augmentez la valeur MAXSIZE.

Ajout d'un fichier journal sur un autre disque

Ajoutez un nouveau fichier journal à la base de données d'un autre disque doté d'un espace suffisant à l'aide de l'instruction ALTER DATABASE <nom_base_de_données> ADD LOG FILE.

Pour ajouter un fichier journal

Identification et gestion d'une transaction longue

Pour plus d'informations, consultez Gestion des transactions de longue durée.

Voir aussi

Concepts

Création de sauvegardes des fichiers journaux de transactions
Facteurs susceptibles de retarder la troncation de journal
Présentation des modes de récupération
Introduction aux journaux de transactions
Utilisation des sauvegardes de journaux de transactions

Autres ressources

ALTER DATABASE (Transact-SQL)
Gestion du journal des transactions
sp_add_log_file_recover_suspect_db (Transact-SQL)

Aide et Informations

Assistance sur SQL Server 2005

Historique des modifications

Version Historique

14 avril 2006

Nouveau contenu :
  • Ajout d'une description sur l'impact d'un journal des transactions saturé sur la disponibilité de la base de données.
  • Ajout d'informations sur l'utilisation de sys.database en vue d'identifier la cause d'un journal des transactions saturé.
  • Ajout d'informations sur la résolution de l'erreur 9002 de la rubrique précédente relative à la résolution des problèmes d'espace disque insuffisant.