Gérer la taille du fichier journal des transactions
Dans certains cas, il peut être utile de réduire ou de développer physiquement le fichier journal physique du journal des transactions d’une base de données SQL Server. Cette rubrique contient des informations sur la façon de surveiller la taille d’un journal des transactions SQL Server, de réduire le journal des transactions, d’ajouter ou d’agrandir un fichier journal des transactions, d’optimiser le taux de croissance du journal des transactions tempdb et de contrôler la croissance d’un fichier journal des transactions.
Contrôler l'utilisation de l'espace pour le journal
Vous pouvez contrôler l'espace occupé par le journal à l'aide de DBCC SQLPERF(LOGSPACE). Cette commande retourne des informations sur la quantité d'espace journal actuellement utilisée et indique à quel moment le journal des transactions a besoin d'être tronqué. Pour plus d’informations, consultez DBCC SQLPERF (Transact-SQL). Pour plus d’informations sur la taille actuelle d’un fichier journal, sa taille maximale et l’option de croissance automatique du fichier, vous pouvez également utiliser les colonnes size, max_size et growth pour ce fichier journal dans sys.database_files. Pour plus d’informations, consultez sys.database_files (Transact-SQL).
Important
Nous vous recommandons d'éviter de surcharger le disque du journal.
Réduire la taille du fichier journal
Pour réduire la taille physique d'un fichier journal physique, vous devez réduire le fichier journal. Cela est utile si vous savez qu'un fichier journal de transactions contient de l'espace inutilisé dont vous n'avez pas besoin. La réduction d'un fichier journal ne peut avoir lieu que lorsque la base de données est en ligne et, également, lorsqu'au moins un fichier journal virtuel est libre. Dans certains cas, la réduction du journal peut n'être possible qu'après la troncation de journal suivante.
Notes
Certains facteurs (par exemple, une transaction longue) chargés de maintenir les fichiers journaux virtuels actifs pendant une période de temps prolongée peuvent limiter, voire empêcher, la réduction du journal. Pour plus d’informations sur les facteurs qui peuvent retarder la troncation du journal, consultez Journal des transactions (SQL Server).
La réduction d'un fichier journal supprime un ou plusieurs fichiers journaux virtuels qui ne contiennent aucune partie du journal logique (autrement dit, des fichiers journaux virtuels inactifs). Lorsque vous réduisez un fichier journal de transactions, un nombre suffisant de fichiers journaux virtuels inactifs sont supprimés à la fin du fichier journal afin de réduire le journal et le ramener à une taille proche de la taille cible.
Pour réduire un fichier journal (sans réduire les fichiers de base de données)
Pour surveiller les événements de réduction du fichier journal
To monitor log space
sys.database_files (Transact-SQL) (consultez les colonnes size, max_size et growth du ou des fichiers journaux.)
Notes
Il est possible de définir une réduction automatique des fichiers de la base de données et des fichiers journaux. Toutefois, nous vous déconseillons la réduction automatique, et la propriété de base de données autoshrink
est définie par défaut par la valeur FALSE. Si autoshrink
est définie par la valeur TRUE, la troncation automatique réduit la taille d'un fichier uniquement lorsque plus de 25 pour cent de son espace est inutilisé. Le fichier est réduit soit à la taille à laquelle seuls 25 % de ce dernier sont inutilisés soit à sa taille d'origine, selon la valeur la plus élevée. Pour plus d’informations sur la modification du paramètre de la autoshrink
propriété, consultez Afficher ou Modifier les propriétés d’une base de données-utilisation de la propriété Auto Shrink sur la page Options ou ALTER DATABASE SET Options (Transact-SQL)-utiliser l’option AUTO_SHRINK.
Ajouter ou agrandir un fichier journal
Une autre solution pour gagner de l'espace consiste à agrandir le fichier journal existant (si l'espace disque le permet) ou à ajouter un fichier journal à la base de données, généralement sur un autre disque.
Pour ajouter un fichier journal à la base de données, utilisez la clause ADD LOG FILE de l'instruction ALTER DATABASE. L'ajout d'un fichier journal permet au journal de croître.
Pour agrandir le fichier journal, utilisez la clause MODIFY FILE de l'instruction ALTER DATABASE en spécifiant la syntaxe SIZE et MAXSIZE. Pour plus d’informations, consultez ALTER DATABASE (Transact-SQL).
Optimiser la taille du journal des transactions tempdb
Le redémarrage d’une instance de serveur permet de redimensionner le journal des transactions de la base de données tempdb conformément à sa taille d’origine avant la croissance automatique. Ceci peut réduire les performances du journal des transactions tempdb . Vous pouvez éviter cette surcharge en augmentant la taille du journal des transactions tempdb après avoir démarré ou redémarré l'instance de serveur. Pour plus d'informations, consultez tempdb Database.
Contrôler la croissance d'un fichier journal de transactions
Vous pouvez utiliser l’instruction ALTER DATABASE (Transact-SQL) pour gérer la croissance d’un fichier journal des transactions. Notez les points suivants :
Pour modifier la taille actuelle du fichier selon les unités Ko, Mo, Go et To, utilisez l'option SIZE.
Pour modifier l'incrément de croissance, utilisez l'option FILEGROWTH. Une valeur 0 indique que la croissance automatique est désactivée et qu'aucun espace supplémentaire n'est autorisé. Un faible incrément de croissance automatique d'un fichier journal peut réduire les performances. L'incrément de croissance d'un fichier journal doit être suffisamment important pour éviter une expansion fréquente. Un incrément de croissance par défaut de 10 % convient généralement.
Pour plus d’informations sur la modification de la propriété de croissance d’un fichier journal, consultez ALTER DATABASE (Transact-SQL).
Pour contrôler la taille maximale d'un fichier journal en Ko, Mo, Go et To ou affecter la valeur UNLIMITED à la croissance, utilisez l'option MAXSIZE.
Voir aussi
BACKUP (Transact-SQL)
Résoudre les problèmes liés à un journal des transactions saturé (erreur SQL Server 9002)