Wat is het LDF-bestandsformaat?
Een .ldf-bestand is een Transaction Log File gemaakt door Microsoft SQL Server om elke wijziging in een database vast te leggen voordat deze wijzigingen naar de schijf worden geschreven. Het implementeert een „write-ahead logging”-strategie: SQL Server schrijft eerst een logrecord en past vervolgens de bijbehorende wijziging toe op de gegevenspagina's.
Elke .ldf werkt als de vaste metgezel van een primair .mdf-gegevensbestand. Zonder een gezond logbestand kan de database niet online komen; het verwijderen of verliezen van een .ldf buiten gecontroleerde procedures om kan een database onherstelbaar maken.
Intern is het logboek verdeeld in Virtual Log Files (VLF's) - vaste segmenten die SQL Server op een circulaire manier toewijst en hergebruikt. Elk logrecord draagt een uniek Log Sequence Number (LSN), een waarde van 10 bytes die het bestandsnummer, de blokoffset en de positie binnen een logblok van 512 bytes codeert. De LSN-keten is wat de engine volgt tijdens crashherstel om voltooide transacties opnieuw uit te voeren en onvolledige transacties ongedaan te maken.
De .ldf vormt de basis voor verschillende kritieke SQL Server-functies:
- Crashherstel - het opnieuw afspelen of terugdraaien van lopende transacties na een onverwachte uitschakeling
- Point-in-time herstel - gebruikt samen met een .bak volledige back-up en .trn logboekback-ups onder het FULL-herstelmodel
- Replicatie en Change Data Capture (CDC) - het rechtstreeks lezen van vastgelegde wijzigingen uit het logboek
Het formaat is een eigen binair formaat zonder publiekelijk gedocumenteerde „magic bytes” en kan niet handmatig worden geopend. Tools van derden, zoals ApexSQL Log of Redgate SQL Log, kunnen logrecords decoderen voor audit- of forensische doeleinden. Vanaf SQL Server 2017 worden .ldf-bestanden identiek ondersteund op Linux en in Docker-containers, naast de secundaire .ndf-gegevensbestanden.
Beveiliging & veiligheid
RISICO: MEDIUMHet bestand bevat gegevens, geen uitvoerbare code, dus het brengt geen direct malware-risico met zich mee. Het echte gevaar is operationeel: het verwijderen of loskoppelen van een .ldf van een actieve of „suspect” database kan gegevensverlies veroorzaken of de database onherstelbaar maken, en het maken van een database zonder logboek (of met een herbouwd logboek) verliest lopende transacties. Bewerk een .ldf nooit handmatig. Als het logboek enorm is, verklein het dan op de ondersteunde manier (back-up van het logboek, dan DBCC SHRINKFILE) in plaats van het te verwijderen. Met TDE versleutelde logboeken vereisen het certificaat/de sleutels van de database om te herstellen.
Formaatdetails
in een notendopProgramma's die LDF-bestanden openen
Technische details
diepe specificaties| Codering | Binair, little-endian |
| Containerstructuur | Reeks Virtual Log Files (VLF's); SQL Server wijst VLF's toe en hergebruikt ze in een circulair patroon zodra logruimte vrijkomt |
| Logrecord-eenheid | Logrecords van variabele lengte verpakt in logblokken van 512 bytes |
| Record-identificatie | Log Sequence Number (LSN) - een waarde van 10 bytes die het logbestandsnummer, de blokoffset binnen het bestand en het positienummer binnen het blok codeert |
| Circulair hergebruik | Logruimte wordt teruggewonnen en hergebruikt zodra het actieve gedeelte niet langer nodig is - na een checkpoint in het SIMPLE-model of een logboekback-up in het FULL-model |
| Ondersteuning herstelmodel | Gedrag verschilt per SQL Server-herstelmodel: SIMPLE (automatisch afkappen bij checkpoint), BULK-LOGGED (minimale logging voor bulkbewerkingen), FULL (logboek groeit totdat een logboekback-up wordt gemaakt) |
| Gekoppeld gegevensbestand | Altijd gekoppeld aan ten minste één primair `.mdf`-gegevensbestand; extra gegevensbestanden gebruiken de extensie `.ndf` |
| Maximale bestandsgrootte | Tot 2 TB per logbestand op Windows NTFS/ReFS; een enkele database kan meerdere `.ldf`-bestanden hebben, elk onderworpen aan deze limiet |
| Versleuteling | Standaard onversleuteld; automatisch versleuteld wanneer Transparent Data Encryption (TDE) is ingeschakeld op de database |
| Compressie | De `.ldf` zelf wordt ongecomprimeerd opgeslagen; logboekback-ups geschreven naar `.trn`- of `.bak`-bestanden kunnen SQL Server-back-upcompressie gebruiken |
| Checksum / integriteit | Optionele „torn-page”-detectie en pagina-checksums configureerbaar op databaseniveau; de engine valideert de LSN-keten bij elk herstel |
| Automatische groei | SQL Server laat de `.ldf` automatisch groeien wanneer deze vol raakt; de groei-stap is configureerbaar in vaste MB's of percentages; overmatige automatische groei in kleine stappen veroorzaakt VLF-fragmentatie en trager herstel |
| Interne versiebinding | Formaat is gekoppeld aan de SQL Server-engineversie en het database-compatibiliteitsniveau; SQL Server 2022 gebruikt bijvoorbeeld interne databaseversie 904 |
| OS-platformondersteuning | Windows (alle moderne SQL Server-versies); Linux en Docker-containers (SQL Server 2017 en later via SQL Server on Linux) |
| MIME-type | application/octet-stream (geen specifiek MIME-type geregistreerd voor dit formaat) |
| Directe toegang | Niet bedoeld om rechtstreeks te openen of te parsen; toegankelijk via koppeling aan de SQL Server-engine, RESTORE DATABASE-commando's of loglezers van derden zoals ApexSQL Log of Redgate SQL Log |
| Uitgebracht | Microsoft SQL Server (log architecture present since the Sybase-derived 4.x/6.x era, 1990s) |
| Laatste versie | Format tied to the database compatibility/engine version (e.g. SQL Server 2022, internal db version 904) |
| Specificatie | learn.microsoft.com |
LDF conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over LDF-bestanden.