27 Aralık 2007 Perşembe

The tail of the log for the database "Sirketim" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do no

HATA MESAJI:
"Msg 3159, Level 16, State 1, Line 1

The tail of the log for the database "Sirketim" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.

Msg 3013, Level 16, State 1, Line 1
RESTORE DATABASE is terminating abnormally."

AÇIKLAMA:
Bu hata mesajını bir veritabanını açmaya (Restore) çalıştığınızda alırsınız.

Hatanın nedeni ise, açmaya çalıştığınız veritabanının kopyasının, üzerine açmaya çalıştığınız veritabanından daha eski olmasıdır.

Meselâ "Sirketim" isimli veritabanınızın yedeğini en son 22 Aralık 2007 tarihinde aldınız. Bundan sonra veritabanı üzerinde tasarım olarak veya veri girişi olarak güncellemeler oldu. Ayın 23' ünde, ayın 22' sinde aldığınız yedeği bir nedenden dolayı Sirketim veritabanının üzerine açmak istediniz. İşte o zaman bu hatayı alırsınız.

ÇÖZÜM:
Aslına bakarsanız bu bir çeşit koruma sistemidir. Maksat, yeni verilerinizin üzerine yanlışlıkla eski verilerinizin yazılmasını önlemektir ve bu özellik SQL Server 2005 ile birlikte geldi.

Bu koruma sistemini açmak için (ki aslında uyarı mesajının içerisinde de çözümü söylüyor) iki yöntem kullanabilirsiniz.

1. Yöntem: Veritabanınızın en güncel Log yedeğini alarak (NO_TRUNCATE ve NORECOVERY parametrelerini kullanarak), yedeğinizi mevcut veritabanının üzerine açabilirsiniz.

2. Yöntem: Bu yöntemde RESTORE komutuyla birlikte REPLACE parametresini kullanarak (hiç yedek almadan) eski yedeğinizi halihazırdaki veritabanınızın üstüne açabilirsiniz. Bu yöntemde dikkate almanız gereken şey, bu açtığınız yedeği aldığınız tarihten sonra veritabanınızdaki yapılan tüm değişiklikler kaybolacaktır.

1 yorum:

ihsan dedi ki...

Çözüm için teşekkürler...