Sql Server - Database Restore Hatası
Sql Server’da bir veritabanının yedeğini aldıktan sonra başka bir veritabanına bu yedeği yüklemek istediğinizde
“System.Data.SqlClient.SqlError: The backup set holds a backup of a database other than the existing ‘XYZ’ database. (Microsoft.SqlServer.Smo)”
bir hata alabilirsiniz. Bu hatanın nedeni yedek işleminin yanlış kullanılmasıdır. Yedek işlemi; bir veritabanının verisini yedeklemek ve gerektiğinde aynı veritabanına saklanan verileri yüklemektir. Burada hataya neden olan durumda ise yedek işlemi; veri aktarma için kullanılıyor. Bir veritabanındaki bilgileri başka bir veritabanına kopyalamak için yani. Veri kopyalamak için zaten başka yollar geliştirilmiştir, o yollar kullanılarak rahat bir şekilde veri kopyalama işlemi yapılabilir.
Bir yedeğin veritabanına restore edilebilmesi için yedeğin alındığı veritabanı ile restore edilecek veritabanının veritabanı dosyalarının aynı isimde olması gerekir. Yedeği alınmış veritabanı “ASD”, yedeğin yükleneceği veritabanı “XYZ” olsun.
“ASD” veritabanını sağ tıklayıp “properties” menüsünü tıklarsanız karşınıza veritabanının özellikler penceresi gelir.
Sol tarafta “General”, “Files” vb. veriler içeren bir liste yer almaktadır.
Files’ı seçerseniz karşınıza veritabanının dosyaları ile ilgili bilgiler gelir. “ASD” ve “ASD_log”.
Bu dosyaların isimleri değişiklik gösterebilir ancak varsayılan olarak bu şekildedirler. Eğer yedeği yükleyeceğimiz “XYZ” veritabanının dosyalarının isimlerini bu isimler olarak değiştirirsek yedek yükleme işlemini başarabiliriz. Bunun için;
“XYZ” veritabanını sağ tıklayıp “properties” menüsünü tıklıyoruz.
Sol tarafta Files’ı seçiyoruz ve karşımıza veritabanının dosyaları ile ilgili bilgiler geliyor. “XYZ” ve “XYZ_log”.
Bu liste düzenlenebilir özelliğe sahiptir, yani isimleri direk buradan değiştirebiliriz. “XYZ” dosyasını “ASD” olarak “XYZ_log” dosyasını da “ASD_log” olarak değiştiriyoruz.
Şimdi restore işlemini tekrar deniyoruz!
“System.Data.SqlClient.SqlError: The tail of the log for the database “SalesYdk” 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. (Microsoft.SqlServer.Smo)”
böyle bir hata alırsanız Restore penceresinde sol listeden (”General”, “Options” olan) “Options” kısmına geçerek “Overwrite the existing database” seçeneğini işaretlerseniz hatayı geçebilirsiniz.
Restore işleminden sonra değiştirdiğiniz veritabanı isimlerini eski haline getirmeniz sağlıklı olur, aksi halde sorunlar yaşayabilirsiniz.
Yorum yok
Yorum yapHenüz yorum yok.
Yorumlar için RSS Sitenizden Geri izleme