Résoudre les problèmes liés à un journal des transactions saturé (erreur SQL Server 9002)
Cette rubrique décrit les réactions possibles et émet quelques suggestions qui vous aideront à éviter cette situation dans le futur. Quand 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, la base de données reste en ligne mais elle peut uniquement être lue, et pas être 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 comme RESOURCE PENDING. 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 une description des facteurs susceptibles de retarder la troncation du journal, consultez Journal des transactions (SQL Server).
Important
Si la base de données était en mode de récupération quand 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.
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 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, reportez-vous à la section Sauvegarde de la fin du journal (SQL Server).
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.
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 pour les fichiers journaux est de deux téraoctets (To) par fichier journal.
Pour augmenter la taille du fichier
Si la fonctionnalité de croissance automatique est désactivée, que la base de données est en ligne et que 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.
Notes
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 sur un autre disque disposant d’un espace suffisant à l’aide d’ALTER DATABASE <database_name> ADD LOG FILE.
Pour ajouter un fichier journal
Voir aussi
ALTER DATABASE (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)