4 Şubat 2008 Pazartesi

"The log or differential backup cannot be restored because no files are ready to rollforward."

HATA MESAJI:
"The log or differential backup cannot be restored because no files are ready to rollforward."

AÇIKLAMA:
Bu hata mesajını bir kaç yedek dosyasını arka arkaya açmak istediğinizde alabilirsiniz.

ÇÖZÜM:
SQL Server' da yedek dosyanızdan geri dönmek istediğinizde ve eğer birden fazla yedek açacaksanız (Restore) o zaman ilk yedekten başlayıp en sondan bir önceki yedeğe kadar RESTORE komutuyla birlikte WITH NORECOVERY anahtarını da kullanmanız gerekir.

Meselâ "Sirketim" isminde bir veritabanınız olduğunu varsayın. Haftada bir kere tam (FULL), diğer günler de fark (DIFFERENTIAL) yedeğini alıyorsunuz.

Pazar = FULL
Pazartesi = DIFFRENTIAL
Salı = DIFFRENTIAL
Çarşamba = DIFFRENTIAL
Perşembe = Veritabanınız bozuldu ve eskisini silip yedekten dönebildiğiniz kadar dönmeye çalışacaksınız.

Şu yolu takip edersiniz:
1- RESTORE DATABASE [Sirketim] FROM DISK = N'C:\test\Sirketim.bak' WITH FILE = 1, NORECOVERY
2- RESTORE DATABASE [Sirketim] FROM DISK = N'C:\test\Sirketim.bak' WITH FILE = 4, RECOVERY

Dikkat ederseniz ilk adımda RESTORE işlemiyle veritabanımın yedeğini açarken "NORECOVERY" anahtarını kullandım. Bu, şu anlama geliyor: "Bu, açacağım son yedek değil, bundan sonra daha açacaklarım var." İşte bu nedenle en son açacağımız yedeğe kadar "NORECOVERY" anahtarını kullanmalıyız.

En son yedekte ise gördüğünüz gibi "RECOVERY" anahtarını kullandım. Bu da şu anlama gelir: "Bundan sonra artık açacağım herhangi bir yedek yok. Bu nedenle artık dosyamı kullanılabilir hale getir".

Evet, "kullanılabilir hale getir." diyorum, çünkü bir yedeği "NORECOVERY" anahtarı ile açarsanız o veritabanını kullanamazsınız. Ne sorgulayabilirsiniz ne de yeni bir kayıt ekleyip değiştirebilirsiniz.

"NORECOVERY" anahtarına alternatif olarak "STANDBY" anahtarını da kullanabilirsiniz. İşlev olarak aynı işlevi görecektir, fakat "STANDBY" anahtarının "NORECOVERY" anahtarına göre olan farkuı şudur: Bir veritabanını "STANDBY" anahtarını kullanarak açarsanız, o veritabanının üstüne daha başka yedekler de açabilirsiniz. Bunun yanında o veritabanını "NORECOVERY" nin aksine, sorgulayabilirsiniz de. Fakat sadece SELECT komutuyla sorgulayabilirsiniz, o kadar. Yani yeni bir kayıt ekleyemez, veri değiştiremez veya silemezsiniz. Ayrıca STANDBY ile açtığınız veritabanının üstüne başka bir yedek daha açtığınızda, o anda veritabanına bağlı olan kullanıcılar otomatik olarak veritabanından dışarı atılırlar. Açma işlemi bittikten sonra tekrar veritabanını sorgulayabilirler elbette.

Hiç yorum yok: