Qué son los archivos MDF y LDF en Microsoft SQL Server
SQL Server almacena cada base de datos en dos archivos físicos principales:
- .MDF (Primary Data File): contiene los datos reales: tablas, índices, vistas, procedimientos almacenados, funciones, triggers, restricciones, metadatos del catálogo. Una BD tiene un solo .mdf.
- .LDF (Log File): registro de transacciones (WAL - Write Ahead Logging). Guarda cada operación (INSERT/UPDATE/DELETE/BULK/DDL) para garantizar ACID (atomicidad, consistencia, aislamiento, durabilidad), permitir rollback, recovery, replicación, CDC, log shipping, Always On.
Archivos secundarios
- .NDF (Secondary Data Files): opcionales, para distribuir datos en varios discos/volúmenes (filegroups). Una BD puede tener 0..N .ndf.
Ubicación por defecto
C:\Program Files\Microsoft SQL Server\MSSQLxx.INSTANCE\MSSQL\DATA\ (cambia en instalación o con ALTER DATABASE MODIFY FILE).
Modelos de recuperación y .LDF
| Modelo | Comportamiento LDF | Uso típico |
|---|---|---|
| Simple | Trunca log en checkpoint (checkpoint = escritura páginas sucias a disco). No permite restore point-in-time. | Dev, test, data warehouse recargable. |
| Full | Registra todo; requiere BACKUP LOG periódico para truncar. Permite restore a cualquier momento. | Producción OLTP crítica. |
| Bulk-Logged | Operaciones masivas mínimamente logadas. Restore point-in-time con restricciones. | Cargas masivas nocturnas. |
Gestión práctica
- Mover .mdf/.ldf: ALTER DATABASE ... MODIFY FILE (nueva ruta) → offline → mueve archivos → online. O Detach → mueve → Attach.
- Reducir (Shrink) LDF hinchado: BACKUP LOG → DBCC SHRINKFILE (NOMBRE_LOG, tamaño_objetivo_MB). No shrinks rutinarios; fragmenta.
- Autogrowth: configura crecimiento fijo (ej. 256/512 MB) no %, y MAXSIZE para no llenar disco.
- Instant File Initialization (IFI): concede «Realizar tareas de mantenimiento de volumen» a la cuenta de servicio SQL → acelera crecimiento .mdf/.ndf (no .ldf).
Resumen
.MDF = datos. .LDF = bitácora transaccional (garantía ACID). Ambos son críticos; ponlos en discos rápidos (NVMe) y separados si posible. Monitoriza espacio libre y log_reuse_wait_desc.
- ·Qué son las aplicaciones de bases de datos
- ·Qué es una base de datos web
- ·Cómo saber el nombre de red (servidor) de tu ordenador en Windows 7
- ·Cómo crear y configurar una conexión de base de datos ODBC
- ·¿Qué es una dirección de servidor?
- ·Qué significa un error DNS y cómo afecta tu navegación
- ·Qué son Thicknet (10Base5) y Thinnet (10Base2): Ethernet coaxial clásico
- ·Cuál es el tiempo de espera predeterminado en SSH
- Qué es una billetera electrónica (eWallet) y si es segura
- ¿Cuáles son los usos de una base de datos?
- ¿Qué son las configuraciones de proxy? Tipos y usos
- ¿Qué es un servidor SQL?
- ¿Para qué sirve un servidor informático?
- Qué significan SP, LP y SLP/EP en videocasetes VHS: velocidad, duración y calidad
