Eine verlorene oder beschädigte SQL Server Log-Datei (.ldf) ist einer der gefürchtetsten Notfälle für Datenbankadministratoren. Dieser Leitfaden zeigt Schritt für Schritt, wie man eine Datenbank in einem solchen Szenario wiederherstellen kann – ohne Datenverlust, wenn möglich.
Symptome und Diagnose
-- Datenbankstatus prüfen
SELECT name, state_desc, log_reuse_wait_desc
FROM sys.databases
WHERE name = 'MyDatabase';
-- Wenn Status = SUSPECT: Log-Problem bestätigt
Methode 1: Emergency-Modus mit DBCC CHECKDB
-- Datenbank in Emergency-Modus setzen
ALTER DATABASE MyDatabase SET EMERGENCY;
-- Single-User-Modus aktivieren
ALTER DATABASE MyDatabase SET SINGLE_USER;
-- DBCC CHECKDB mit Repair (Datenverlust möglich!)
DBCC CHECKDB (MyDatabase, REPAIR_ALLOW_DATA_LOSS);
-- Datenbank wieder online bringen
ALTER DATABASE MyDatabase SET ONLINE;
ALTER DATABASE MyDatabase SET MULTI_USER;
Methode 2: Neue Log-Datei erstellen
-- Nur wenn kein aktuelles Backup verfügbar
-- ACHTUNG: Möglicher Datenverlust bei uncommitted transactions
ALTER DATABASE MyDatabase SET EMERGENCY;
ALTER DATABASE MyDatabase SET SINGLE_USER
WITH ROLLBACK IMMEDIATE;
-- Datenbankdateien neu anfügen ohne Log
EXEC sp_detach_db 'MyDatabase', 'true';
-- Neu anhängen: Nur .mdf angeben (kein .ldf)
CREATE DATABASE MyDatabase ON
(FILENAME = 'C:DataMyDatabase.mdf')
FOR ATTACH_REBUILD_LOG;
Prävention: Immer Backups prüfen
Nach der Wiederherstellung: Sofort ein vollständiges Backup erstellen und eine regelmäßige Backup-Strategie implementieren. SQL Server Agent Jobs für tägliche Full Backups und stündliche Log Backups sind Standard-Best-Practice für Produktionsdatenbanken.








