Qu'est-ce que le format de fichier LDF ?
Un fichier .ldf est un Fichier de journal des transactions créé par Microsoft SQL Server pour enregistrer chaque modification apportée à une base de données avant que ces modifications ne soient écrites sur le disque. Il implémente une stratégie de journalisation anticipée (write-ahead logging) : SQL Server écrit d'abord un enregistrement de journal, puis applique la modification correspondante aux pages de données.
Chaque .ldf fonctionne comme le compagnon jumelé d'un fichier de données principal .mdf. Sans un fichier journal sain, la base de données ne peut pas être mise en ligne ; supprimer ou perdre un .ldf en dehors des procédures contrôlées peut rendre une base de données irrécupérable.
En interne, le journal est divisé en Fichiers journaux virtuels (VLF) - des segments fixes que SQL Server alloue et réutilise de manière circulaire. Chaque enregistrement de journal porte un Numéro de séquence de journal (LSN) unique, une valeur de 10 octets codant le numéro de fichier, le décalage de bloc et l'emplacement dans un bloc de journal de 512 octets. La chaîne LSN est ce que le moteur suit lors de la récupération après plantage pour refaire les transactions validées et annuler celles incomplètes.
Le .ldf sous-tend plusieurs fonctionnalités critiques de SQL Server :
- Récupération après plantage - rejouer ou annuler les transactions en cours après un arrêt inattendu
- Restauration à un point précis dans le temps - utilisé conjointement avec une sauvegarde complète .bak et des sauvegardes de journaux .trn sous le mode de récupération COMPLET
- Réplication et Capture de données modifiées (CDC) - lecture des modifications validées directement depuis le journal
Le format est un binaire propriétaire sans « magic bytes » documentés publiquement et ne peut pas être ouvert à la main. Des outils tiers tels qu'ApexSQL Log ou Redgate SQL Log peuvent décoder les enregistrements de journaux à des fins d'audit ou d'expertise judiciaire. À partir de SQL Server 2017, les fichiers .ldf sont pris en charge de manière identique sur Linux et dans les conteneurs Docker aux côtés des fichiers de données secondaires .ndf.
Sécurité et sûreté
RISQUE : MEDIUMLe fichier contient des données et n'est pas un exécutable, il ne présente donc aucun risque direct de logiciel malveillant. Le danger réel est opérationnel : supprimer ou détacher un .ldf d'une base de données active ou « suspecte » peut entraîner une perte de données ou rendre la base de données irrécupérable, et créer une base de données sans son journal (ou avec un journal reconstruit) fait perdre les transactions en cours. Ne modifiez jamais manuellement un .ldf. Si le journal est énorme, réduisez-le de la manière prise en charge (sauvegardez le journal, puis DBCC SHRINKFILE) plutôt que de le supprimer. Les journaux chiffrés par TDE nécessitent le certificat ou les clés de la base de données pour être restaurés.
Détails du format
en brefProgrammes qui ouvrent les fichiers LDF
Détails techniques
spécifications approfondies| Encodage | Binaire, little-endian |
| Structure du conteneur | Séquence de fichiers journaux virtuels (VLF) ; SQL Server alloue et réutilise les VLF selon un modèle circulaire à mesure que l'espace du journal est libéré |
| Unité d'enregistrement de journal | Enregistrements de journal de longueur variable emballés dans des blocs de journal de 512 octets |
| Identifiant d'enregistrement | Numéro de séquence de journal (LSN) - une valeur de 10 octets codant le numéro du fichier journal, le décalage de bloc dans le fichier et le numéro d'emplacement dans le bloc |
| Réutilisation circulaire | L'espace du journal est récupéré et réutilisé une fois que la partie active n'est plus nécessaire - après un point de contrôle en mode SIMPLE ou une sauvegarde de journal en mode COMPLET |
| Prise en charge du mode de récupération | Le comportement diffère selon le mode de récupération SQL Server : SIMPLE (troncation automatique au point de contrôle), BULK-LOGGED (journalisation minimale pour les opérations en bloc), COMPLET (le journal croît jusqu'à ce qu'une sauvegarde de journal soit effectuée) |
| Fichier de données jumelé | Toujours jumelé avec au moins un fichier de données principal `.mdf` ; les fichiers de données supplémentaires utilisent l'extension `.ndf` |
| Taille maximale du fichier | Jusqu'à 2 To par fichier journal sur Windows NTFS/ReFS ; une seule base de données peut avoir plusieurs fichiers `.ldf`, chacun étant soumis à cette limite |
| Chiffrement | Non chiffré par défaut ; automatiquement chiffré lorsque le chiffrement transparent des données (TDE) est activé sur la base de données |
| Compression | Le fichier `.ldf` lui-même est stocké non compressé ; les sauvegardes de journaux écrites dans des fichiers `.trn` ou `.bak` peuvent utiliser la compression de sauvegarde SQL Server |
| Somme de contrôle / Intégrité | Détection de page endommagée (torn-page) et sommes de contrôle de page configurables au niveau de la base de données ; le moteur valide la chaîne LSN à chaque récupération |
| Croissance automatique | SQL Server augmente automatiquement la taille du `.ldf` lorsqu'il est plein ; l'incrément de croissance est configurable en Mo fixes ou en pourcentage ; une croissance automatique excessive par petits incréments provoque une fragmentation des VLF et ralentit la récupération |
| Liaison de version interne | Le format est lié à la version du moteur SQL Server et au niveau de compatibilité de la base de données ; SQL Server 2022, par exemple, utilise la version de base de données interne 904 |
| Prise en charge de la plateforme OS | Windows (toutes les versions modernes de SQL Server) ; Linux et conteneurs Docker (SQL Server 2017 et versions ultérieures via SQL Server on Linux) |
| Type MIME | application/octet-stream (aucun type MIME dédié enregistré pour ce format) |
| Accès direct | Non destiné à une ouverture ou une analyse directe ; accessible via l'attachement au moteur SQL Server, les commandes RESTORE DATABASE ou des lecteurs de journaux tiers tels qu'ApexSQL Log ou Redgate SQL Log |
| Publié | Microsoft SQL Server (log architecture present since the Sybase-derived 4.x/6.x era, 1990s) |
| Dernière version | Format tied to the database compatibility/engine version (e.g. SQL Server 2022, internal db version 904) |
| Spécification | learn.microsoft.com |
Conversions LDF
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers LDF.