Log Dosyası olmadan SQL Server veri tabanı restore etme

6-1-2007

22 GB kendisi, 32 GB kadarda evlere şenlik bir log dosayası olan veritabanında integer bir alanı tinyint' e çevirmeye çalışma gafletinde bulununca bilgisayarı 3 saat kadar çalışır ancak bir şey yapmaz buldum.

Sonradan aklıma geldi, yanlış bilmiyorsam SQL Server önce tüm datayı ekstra bir geçici tabloya taşıyor ve daha sonradan güncelleme yapıyordu ve data sığmazsa onu siliyordu ya da öyle bir şey. Tabii ki manyak SQL Server' ım 2.5 milyon datada bu işi yapmaya çalışınca sapıttı. Dengesiz ben de 3 saatten sonra umudumu kesinde direk SQL Server servisini zorla kapattım.

Lakin ondan sonra tekrar SQL Server tekrar veritabanına ulaşmaya çalışınca muhtemelen Log dosyasından dolayı kaldığı yeri tekrar bulup işlemi tekrar başlatmaya çalışıyordu vs. Özetle bu işlemden sonra bir daha veritanıma ulaşamadım.

Zaten log dosyasından kurtulmak istiyorum arada kritik transaction kalmadığını biliyordum, dolayısıyla Log' u silsem data kaybım olmayacaktı. Ancak sorun şu ki normalde SQL Server sadece data dosyasını (.mdf) attach edemezsiniz log (.ldf) dosyasını da vermeniz gerekiyor.

Trying to Recover Without an .ldf isimli makaledeki koddan yola çıkarak önce eski database' imin fiziksel dosya adını değiştirdim. Çünkü SQL Server yüklemeye çalışınca kitleniyordu, ya da çoook uzun sürecek bir işleme giriyordu. Daha sonra database' i sildim.

Database' i sildikten sonra aynı isimli yeni bir database açtım ve data dosyasını aynı partition' ında bir yere kaydettim. (aynı partition olmasının esprisi 22GB tı taşıma vaktinden kurtarmak). Daha sonra makaledeki scripti çalıştırdım ve database' im tekrar çalışır hale geldi. Dataları kontrol ettim, bu sefer log dosyasının boyutunu sınırladım ve eski log dosyasını sildim.

Bu da böyle bir macera işte...

Recent Blog Posts

See all of the blog posts