Bei einem Kunden hatten wir das Problem, das der MS SQL Server sein Transaction Log (LDF-Datei) mit 40 GB so groß geschrieben hatte, dass die Serverplatte voll war und unser Produktivsystem abgestürzt ist.
Da die LDF-Datei ja „nur“ ein Logfile ist, habe ich den SQL Server gestoppt und die Datei gelöscht und mit 0 Byte neu angelegt. Der SQL Server ließ sich dann auch wieder starten. Aber auf die Datenbank war kein Zugriff mehr möglich, alle Daten weg! Da habe ich ganz schön geschwitzt. Ich musste eh schon schwizen, weil das System 24 h im Volleinsatz ist, und der Serverabsturz selbst schon genug Ärger gemacht hat.
Zum Glück kann man das LDF-File neu schreiben lassen. Per SQL-Befehlen ist wie folgt vorzugehen:
ALTER DATABASE MYCRASHEDDB REBUILD LOG ON (NAME=MYCRASHEDDB_log, FILENAME=’C:\Program Files\Microsoft SQL Server\MSSQL10_50.I01\MSSQL\DATA\MYCRASHEDDB_log.ldf’) DBCC CHECKDB (MYCRASHEDDB) ALTER DATABASE SET MULTI_USER ALTER DATABASE SET SINGLE_USER GO DBCC CHECKDB(‘MYCRASHEDDB’, REPAIR_ALLOW_DATA_LOSS) GO
Und Du bist gerettet, mein Freund.