Anasayfa / Veritabanı/Sql / Sql Server Yedek Alma ve Yedeği Geri Yükleme
sql server yedek

Sql Server Yedek Alma ve Yedeği Geri Yükleme

Bu yazımda Sql Server Management Studio ile veritabanı yedeği alma (backup) ve alınan yedeği geri yükleme (restore) işlemlerini anlatacağım. Yedekleme işlemi, veritabanı üzerinde yer alan tüm verilerin kaybolma ve bozulma riskine karşı bir örneğinin saklanmasıdır. Daha sonra bu yedeklenen veriler, ihtiyaç duyulduğunda geri yüklenerek olası veri kayıpları önlenmiş olur.

Sql Server Management Studio ile Yedek Alma (Backup) İşlemi

Yedek alma işlemine geçmeden önce Sql Server Backup tiplerini bilmek gerekir. Sql Server üzerinde 3 farklı backup çeşiti bulunmaktadır.

  • Full Backup: Adından anlaşılacağı üzere yedeklenme anı itibariyle veritabanındaki herşey yedeğin içine kopyalanır. Elimizde bulunan bir full backup dosyası ile başka bir şeye ihtiyaç duymadan yedeğin alındığı tarihe veritabanı geri yüklenebilir.
  • Differential Backup: Çok fazla verinin bulunduğu büyük veritabanlarını sürekli full backup ile yedeklemek, hem uzun işlem süresi hem de gereksiz disk kullanımlarına neden olur. Böyle durumlarda sadece değişen kısımların yedeğinin alınması işlemidir.
  • Transaction Log Backup: Transaction, ilgili veritabanında yapılan her işlemin bilgilerinin tutulduğu log dosyasıdır. Yedekleme sadece bu kayıtları kapsar.

Backup çeşitlerinden bahsettiğimize göre veritabanımızın yedeğini alma işlemine geçebiliriz. Veritabanımızın üzerinde sağ tıklayarak Tasks–>Backup seçeneğine tıklıyoruz.

sql server backup
Yedekleme İşlemini Başlatma

Yedek alma işlemiyle ilgili ayarların yapıldığı aşağıdaki pencere açılacak. Pencere 3 ana bölüme ayrılmış durumda Source-Backup Settings-Destination.

sqlserver backup settings
Yedekleme (Backup) Ayarları Penceresi

Source bölümü ayarları:

  • Database: Hangi veritabanının yedeğini almak istiyorsak onu seçiyoruz.
  • Recovery Model: Recovery Model, transaction loglarının nasıl kaydedileceği ile ilgili ayarlar içerir. Sql Server’da 3 farklı recovery model seçeneği bulunur. Bunlar Full, Simple ve Bulk Logged seçenekleridir. Bu bölümü yedekleme işlemi sırasında değiştirme olanağınız bulunmamaktadır.
  • Backup Type: Backup türlerine konunun başında değinmiştim. Full backup almak istediğimizi belirterek ilerleyelim.
  • Copy only Backup: Bu yedek alma işleminin backup zincirine dahil edilip edilmeyeceği ile ilgili ayardır.
  • Backup Component: Tüm veritabanının mı, yoksa veritabanına ait bir Filegruop yedeğinin mi alınmak istediğini belirliyoruz.

Backup Set bölümü ayarları:

  • Name: Yedeğimize bir isim veriyoruz.
  • Description: Yedekle ilgili bir açıklama eklemek isterseniz bu bölümü kullanabilirsiniz.
  • Backup set will expire: Yedeğin hangi tarihe kadar geçerli olacağıyla ilgili ayarın yapıldığı bölüm.

Destination bölümü ayarları:

  • Backup To: Bu kısımda yedeğin nerede saklanacağıyla ilgili ayarlar yer alıyor. Disk ve Tape seçenekleri ile, alt kısımda alınan yedeğin nereye kopyalanacağı ile ilgili dosya ayarlarını yapabilirsiniz.

Bu ayarlardan başka pencerenin solundaki Options kısmından daha detaylı ayarlamalar yapmanız da mümkün. O kısma değinmeden geçiyorum.

Ayarları yaptıktan sonra Ok tuşuna bastığınızda eğer hata meydana gelmemişse yedekleme işleminin başarılı olduğuna dair aşağıdaki gibi bir mesaj görüntülemeniz gerekiyor.

database backup completed
Yedekleme İşlemi Başarıyla Tamamlandı

Yedekleme işlemi sonrasında destination yolunu değiştirmediyseniz C:/Program Files/Microsoft SQL Server/MSSQL11.MSSQLSERVER/MSSQL/Backup dizi altında .bak uzantılı yedeğiniz hazır olacaktır.

Sql Server Management Studio ile Yedeğin Geri Yüklenmesi (Restore) İşlemi

Öncelikle şunu belirtmek istiyorum, elimizde mevcut olan bir backup dosyası restore edildiğinde, aksi belirtilmediği sürece mevcut veritabanı üzerine yazılır.

Şimdi az önce oluşturduğumuz .bak uzantılı dosya ile veritabanımızı restore edelim. Öncelikle resimdeki gibi Database–>Restore Database seçeneğine tıklıyoruz.

sqlserver restore database
Geri Yükleme İşlemini Başlatma

Açılan pencerede Restore işlemiyle ilgili ayarlar bulunuyor. Pencere; Source-Destination-Restore Plan isminde 3 bölüme ayrılmış durumda. Uzun uzun bu bölümleri anlatmaya gerek olduğunu sanmıyorum. Source kısmından aldığımız yedeği seçiyoruz. Destination kısmından yedeği yükleyeceğimiz veritabanını seçiyoruz. Restore Plan kısmında aldığımız yedeklerin listesi ve bilgileri görünüyor, eğer birden çok yedeğiniz varsa hangi yedeği yüklemek istediğinizi seçiyorsunuz. Ok tuşuna bastığınızda veritabanı geri yükleme işlemi başlıyor.

restore database settings
Geri Yükleme Ayarları Penceresi

İşlem tamamlandığında hata almazsanız aşağıdaki gibi işlemin başarılı olduğuna dair bir mesaj gösterilecek.

database restore completed
Geri Yükleme İşlemi Başarıyla Tamamlandı

Sql Server backup ve restore işlemi, yukarıda açıklanandan çok daha karmaşık süreçler içermektedir. Bu yazıda en temel yedekleme işlemleri anlatılmıştır. Konuyla ilgili sorularınızı bana iletebilirsiniz.

Konuyla ilgili profesyonel destek almak için http://www.fins.com.tr/SQL-Server-Yedekleme.asp adresini ziyaret edebilirsiniz.

İlginizi Çekebilir!

sql sorguları

Sql (Count, Max, Min, Sum, Avg) Fonksiyonlarının Group By İle Kullanımı

Sql ile basit sorgular öğrenildikten sonra istatistiki raporlamalar için Count, Max, Min, Sum ve Avg …


10 Yorumlar

  1. Hocam Sadece differential backup ı nasıl restore edeceğiz örneğin ben önce bir full backup aldım daha sonra işlemler yaptım ve diffrenital fark backup ı aldım sadece fark olarak aldığım backup ı nasıl restore edebilirim hiç bir yerde bulamadım hep full backup ve restore var yarımcı olursanız çok sevinirim. ben direk diffrential backup ı restore etmeye çalıştım aşağıdaki hatayı verdi…

    TITLE: Microsoft SQL Server Management Studio
    ——————————
    Restore failed for Server ‘asd’. (Microsoft.SqlServer.Smo)
    ——————————
    ADDITIONAL INFORMATION:
    System.Data.SqlClient.SqlError: The log or differential backup cannot be restored because no files are ready to rollforward. (Microsoft.SqlServer.Smo)

    • Merhaba ipman,

      Dif backup için öncesinde alınan full backup yedeği ile birlikte seçilerek restore edebilirsiniz.

  2. Merhaba,
    Eğer denemediğiniz bir yöntemse diye belirtmek isterim, dif backup yüklemeye çalışıyorsanız bildiğim kadarıyla öncelikle dif backup a bağlı temel backup’ı yüklemeniz ve daha sonra sırasıyla dif backupları yüklemeniz gerekiyor.

  3. Merhaba Device dan back up yüklemeye çalışıyorum. Aşağıdaki gibi hata alıyorum bir türlü çözemedim :S

    TITLE: Microsoft SQL Server Management Studio
    ——————————

    Restore of database ‘CPMMASTER_PG_SEC’ failed. (Microsoft.SqlServer.Management.RelationalEngineTasks)

    ——————————
    ADDITIONAL INFORMATION:

    System.Data.SqlClient.SqlError: BACKUP LOG cannot be performed because there is no current database backup. (Microsoft.SqlServer.SmoExtended)

  4. Merhaba;
    Dif backup var ama aldığımız full backup maalesef yok. Bu durum yapılabilecek bir şey var mıdır?

  5. veysel küçükkaraca

    hocalar mühendisler merhabalar;

    ben visual studio üzerinden yazılım geliştirmeye çalışıyorum.
    paralelinde de database’yi şekillendirmeye çalışıyorum. esas database adını verdiğim bir klasörün içine tarasladığım AAA.mdf isimli database yedekte tutuyorum.
    visual studiodaki proje üzerinde de içine verilerin kaydedildiği deneme yanılmaların yapıldığı farklı bir klasörde yine aynı isimli (AAA.mdf) isimli database bulunmaktadır.
    database tabloları diagramları ile ilgili bir değişiklik yapmak istediğim zaman, esas database adını verdiğim klasörün içindeki database attach yapıyorum. işim bittikten sonra tekrar detech yapıp çıkıyorum.

    gelelim altın soruya; içinde verilerin ve deneme yanılmaların yapıldığı database’e, başka bir yerde (esas klasöründe) güncellemesini yaptığım database’nin modelini nasıl çakabilirim. Yani birisinin içinde veri yok ve olmayacak ama tabloları güncel, diğerinin içinde de veri var, ama modelinin revize edilmesi gerekiyor.

    bu adamlar, içinde tonlarca verilerin olduğu bir database’e güncelleme paketi yapıp müşterilerinin verilerine zarar vermeden database modelinin güncelleminin bir yolunu bulmuşlardır herhalde. umarım derdimi anlatmışımdır.

    bu sayfayı takip edeceğim, nolur bana yardım edin.

  6. merhaba imaj backuptan sql database restore edebilirmiyiz.edilirse nasıl teşekkürler

  7. Veysel bey, sql server ı durdur ki db klasöründe (senin tabirinle esas klasöründe) dosyalara erişim yapabilir ve kopyalama işlemini yapabilirsin.

    Sql açıkken kopyalamaya veya taşımaya izin vermiyor…

    “bir garip” te aynı yöntemi kullanabilir.. Yedeğini (esas klasörüne) taşı ..

    Refresh yapılınca, eklediğin db in yanında parantez içinde restore et uyarısıyla gelir, eklenen Db nin üzerindeyken, Tasklardan restore edilince ta taa.. Db niz emrinize amade..

  8. Hocam merhaba benim problemim :

    biligisayar çöktüğü için sql den yedek alamadım sadece logo go nun kurulu olduğu dizini yedekleyebildim

    yeni den format tan sonra sql kurulumu yapıldıktan sonra logo klasöründen eskii dosyalarımı getirebilirmiyim

    saygılar

  9. size mssql backup ile ilgili bir sorum olacak.
    soruyu bir senaryo üzerinden vereyim ;

    pazartesi akşam 23:00 da full backup aldım
    salı akşam 23:00 da Differential backup aldım
    çarşamba akşam 23:00 da Differential backup aldım
    perşembe günü saat 14:00 da bir arkadaş sorgu çalıştırmadan önce güvenlik olsun diye kimseye sormadan full backup alıyor. ve ben akşam 23:00 da her zamanki gibi Differential backup aldım.
    cuma akşam 23:00 da Differential backup aldım
    cumartesi akşam 23:00 da Differential backup aldım.

    şimdi perşembe günüde dahil olmak üzere perşembe gününden sonra aldığım Differential backuplarım
    benim pazartesi aldığım full backup’a bağlı olarak değil.
    perşembe günü saat 14:00 da alınan full backup’a bağlı olduğu için.
    benimde elimde pazartesi günkü full backup ve Differential backuplarım bulunduğu için
    restore etmek istediğimde
    pazartesi aldığım full backup ile cumartesi akşam 23:00 da aldığım Differential backup’u restore etmek isteyince
    mssql bunu kabul etmiyecek.
    çünkü cumartesi günü aldığım Differential backup elimdeki full backup’dan değil.

    böyle bir durumda ne yapılmalıdır.
    bu durum benim için çok önemli. bu sorunla karşı karşıya kaldım.
    yardımlarınız için şimdiden teşekkür ederim.

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Time limit is exhausted. Please reload the CAPTCHA.