Bu yazımda C# üzerinde veritabanı yedekleme işlemini nasıl yapılacağını açıklayacağım. Yedekleme işlemini SQL Server üzerinde yapacağız. Bilgisayarımızda kurulu SQL Server’a bağlanıp, üzerinde bulunan veritabanı yedeklerini belirlemiş olduğumuz klasöre yedekleyeceğiz.
Öncelikle Windows Form projesi oluşturarak aşağıdaki kütüphaneleri projemize ekliyoruz. Form tasarımını istediğiniz gibi yapabilirsiniz. Aşağıda paylaşacağım kod bloğunu kendi tasarımıza uygun olarak düzenleme işlemi yaptıktan sonra herhangi bir sorun çıkmayacaktır.
using System.Data.SqlClient; using System.IO;
Kullanmış olduğum kod bloğunu aşağıda paylaşıyorum açıklamaları ile birlikte.
// Sql server üzerindeki tüm veritabanları listesini alıp, yedekleme fonksiyonuna işlem yapması için yolluyoruz
public void BackupAllUserDatabases()
{
foreach (string databaseName in GetAllUserDatabases())
{
BackupDatabase(databaseName);
}
Log("Veritabanı yedekleme işlemi tamamlandı. \n");
}
// Yedekleme işlemi içerisinde veritabanı ismi oluşturması için BuildBackupPathWithFilename fonksiyonuna gönderiyoruz
public void BackupDatabase(string databaseName)
{
string filePath = BuildBackupPathWithFilename(databaseName);
using (var connection = new SqlConnection(_connectionString))
{
var query = String.Format("BACKUP DATABASE [{0}] TO DISK='{1}'", databaseName, filePath);
using (var command = new SqlCommand(query, connection))
{
connection.Open();
command.ExecuteNonQuery();
}
Log(databaseName + " veritabanı yedeklendi. \n");
}
}
// Dosya ismini oluşturuyoruz
private string BuildBackupPathWithFilename(string databaseName)
{
string filename = string.Format("{0}_{1}_{2}.bak", databaseName, DateTime.Now.ToString("yyyyMMdd"), DateTime.Now.ToString("HHmm"));
return Path.Combine(txtPath.Text.Trim(), filename);
}
// Uygulama içerisindeki bilgi mesajlarını ekrandaki textbox'a yazdırma işlemi yapıyoruz
private void Log(string text)
{
txtLog.Text += DateTime.Now.ToString("dd-MM-yyyy HH:mm") + @" - " + text;
txtLog.SelectionStart = txtLog.Text.Length;
txtLog.ScrollToCaret();
txtLog.Refresh();
}
Uygulamanın çalışan halini indirip denemek isterseniz buradaki linke tıklayarak indirebilirsiniz. Uygulama açıldığında aşağıdaki gibi bir görüntü ile karşılacaksınız. Form üzerinde yapmanız gereken öncelikle yedekleme alınacak klasörü seçip Yedekle butonuna basmak. Eğer klasör seçemeden Yedekle butonuna basarsanız hata alacaksınız.


