09 December 2016

Veritabanı Yedekleme ve Geri Yükleme

SQL Server yedekleme çeşitleri:

Full Backup (Tam yedekleme): Veritabanının tamamının yedeklenmesi. Veritabanına yazılmamış transaction log’da bulunan veriler de yedeklenir.

Differential Backup (Fark yedekleme): Son alınan tam yedekleme sonrası değişen kayıtları yedekler. Önceden full backup alınması gerekir. Tam yedeklemeye göre saklanan veriler daha küçüktür.

Full Backup Kodlarla nasıl yapılır:

Backup database veritabani_adi
 to disk ='dosya yolu'
 with description='Açıklaması',
 name ='veritabani_adi'

Kodlarla değil, Management Studio ile bir veritabanını yedeklemek için yedeklenecek veritabanı üzerinde sağ tıklayarak açılan menüden Tasks seçimi ve ardından Back Up komutu seçilmelidir. Back Up komutu seçildiğinde ekrana Back Up Database iletişim penceresi gelir. Back Up Database penceresinde bulunan Source alanında, Database açılır liste kutusundan yedeklenecek veritabanı ve Backup type açılır liste kutusundan da yedekleme tipi seçilir. Backup set alanında, alınacak yedeğe bir isim ve açıklama eklenebilir. Alınan yedeğin hangi tarihe kadar geçerli olacağı Backup set will expire ile belirlenir. Belirlenen tarihten sonra yedek çalışmayacaktır. Destination (hedef) alanında, yedeğin nereye alınacağı belirlenir. Alınacak yedek, standart olarak SQL Server’ın Backup dizinine olacaktır. Dosya uzantısı da “bak” tır.

Kodlarla backup alma örneği:

backup database Northwind
 to disk ='c:\northwind.bak'
 with description='Full Backup',
 name ='Northwind'

Diffrential backup alma:

backup database Northwind
 to disk='c:\northwind.bak'
 with description='Fark Backup',
 name ='Northwind',
 differential

Backupların içeriğini görme:

restore headeronly
from disk='c:\northwind.bak'

Veritabanı Geri Yükleme

restore database Northwind
 from disk='c:\northwind.bak'
 with file=1,
 norecovery
restore database Northwind
 from disk='c:\northwind.bak'
 with file=2

Log Backup Alma

BACKUP LOG komutuyla bir veritabanının Transaction Log yedeğini alabiliriz. Bunun için öncelikle veritabanının Full Bacup’ını almamız gerekir. Daha sonra log backup’ını alabiliriz.

Örnek:

backup log Musteriler
 to disk='c:\musteriler.bak'
 with description='Log Backup',
 name ='Musteriler'

Diğer backup’ları restore edip en son log yedeğini geri yükleyebiliriz:

restore log Musteriler
 from disk ='c:\musteriler.bak'
 with file=4,
 stopat ='2011-10-04 19:53:50.520'

Daha önce Full Backup alınmadıysa bu hata ile karşılaşırız: “BACKUP LOG cannot be performed because there is no current database backup.”

Comments

  1. Kodlarla backup alma örneği kısmı nasıl c#ta yazılır. İşlem ya da sorgusu nasıl yspilir. Mesela ben bir fonksiyon içinde yazmak istiyorum. Fonksiyonu her çağırdığımda sql veritabanı yedeği alsın. Yardımcı olursan çok sevinirim. Teşekkürler.

  2. Gaziantep Yazılım says:

    İhtiyacım olan bir yazıydı. Emeğiniz için teşekkürlerimi bir borç bilirim. Gayet açık, net ve faydalı bir yazı yazmışınız.

  3. rahle says:

    Çok güzel bir paylaşım olmuş hocam teşekkürler