Partager via


Résoudre les problèmes liés à un journal des transactions complet (erreur SQL Server 9002)

Cette rubrique décrit les réponses possibles à un journal des transactions complet et suggère comment l’éviter à l’avenir. Quand le journal des transactions est saturé, le moteur de base de données SQL Server émet une erreur 9002. Le journal peut se remplir 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, la base de données reste en ligne mais elle peut uniquement être lue, et pas être mise à jour. Si le journal se remplit pendant la récupération, le moteur de base de données marque la base de données comme EN ATTENTE DE RESSOURCES. Dans les deux cas, une intervention de l'utilisateur est nécessaire pour libérer de l'espace disque.

Réponse à un journal des transactions complet

La réponse appropriée à un journal des transactions complet dépend en partie de la condition ou des conditions à l’origine du remplissage du journal. Pour découvrir ce qui empêche la troncation du journal dans un cas donné, utilisez les colonnes log_reuse_wait et log_reuse_wait_desc de la vue du catalogue sys.database. Pour plus d’informations, consultez sys.databases (Transact-SQL). Pour obtenir des descriptions des facteurs qui peuvent retarder la troncation du journal, consultez le journal des transactions (SQL Server) .

Important

Si la base de données était en récupération lorsque l’erreur 9002 s’est produite, après avoir résolu le problème, récupérez la base de données à l’aide de ALTER DATABASE database_name SET ONLINE.

Les alternatives pour répondre à un journal des transactions complet sont les suivantes :

  • Sauvegarde du journal.

  • Libérer de l’espace disque afin que le journal puisse croître automatiquement.

  • Déplacement du fichier journal vers un lecteur de disque avec suffisamment d’espace.

  • Augmentation de la taille d’un fichier journal.

  • Ajout d’un fichier journal sur un autre disque.

  • Achèvement ou interruption d’une transaction de longue durée.

Ces alternatives sont présentées dans les sections suivantes. Choisissez une réponse qui correspond le mieux à votre situation.

Sauvegarde du journal

Sous le modèle de récupération complète ou le modèle de récupération journalisé en bloc, si le journal des transactions n’a pas été sauvegardé récemment, la sauvegarde peut être ce qui empêche la troncation du journal. Si le journal n’a jamais été sauvegardé, vous devez en créer deux sauvegardes pour permettre au Moteur de base de données de 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

Important

Si la base de données est endommagée, consultez Tail-Log Sauvegardes (SQL Server).

Libérer de l’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 qui contient actuellement le fichier journal, envisagez de déplacer le fichier vers un autre lecteur avec suffisamment d’espace.

Important

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. La taille maximale des fichiers journaux est de deux téraoctets (To) par fichier journal.

Pour augmenter la taille du fichier

Si la croissance automatique est désactivée, la base de données est en ligne et un espace suffisant est disponible sur le disque, soit :

  • 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 non zéro pour l’option FILEGROWTH.

Remarque

Dans les deux cas, si la limite de taille actuelle a été atteinte, augmentez la valeur MAXSIZE.

Ajout d’un fichier journal sur un autre disque

Ajoutez un nouveau fichier journal à la base de données sur un autre disque disposant d’un espace suffisant à l’aide de ALTER DATABASE <database_name> ADD LOG FILE.

Pour ajouter un fichier journal

Voir aussi

MODIFIER LA BASE DE DONNÉES (Transact-SQL)
Gérer la taille du fichier journal des transactions
Sauvegardes du journal des transactions (SQL Server)
sp_add_log_file_recover_suspect_db (Transact-SQL)