C# İle Backup ve Restore İşlemi (Entity Framework)
C# uygulamalarında veritabanı da kullanıyorsanız mutlaka yapmamız gereken işlem backup ve restore işlemleridir. Entity Framework ve local db kullanılarak yaptığım işlem resimdeki gibi arkadaşlar.
BACKUP -Yedekleme işlemi için
public static void Backup()
{
SaveFileDialog save = new SaveFileDialog();
save.OverwritePrompt = false;
save.CreatePrompt = true;
save.Filter = "Veri dosyası|0.bak";
save.FileName = DateTime.Now.ToShortDateString() + "_BarkodluSatisProgrami";
if (save.ShowDialog() == DialogResult.OK)
{
try
{
Cursor.Current = Cursors.WaitCursor;
if (File.Exists(save.FileName))
{
File.Delete(save.FileName);
}
var dbPath = save.FileName;
string dbyol = Application.StartupPath + @"\veritabani.mdf";
using (var db = new vggEntities())
{
var cmd = String.Format("BACKUP DATABASE [" + dbyol + "] TO DISK='{1}' WITH FORMAT, MEDIANAME='DbBackups', MEDIADESCRIPTION='Media set for {0} database';"
, dbyol, dbPath);
db.Database.ExecuteSqlCommand(TransactionalBehavior.DoNotEnsureTransaction, cmd);
}
Cursor.Current = Cursors.Default;
MessageBox.Show("Yedekleme yapılmıştır");
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}
}
Backup işlemi yaparken eğer aynı isimde bir yedek varsa onun üzerine ekleyecektir, mevcudun kapasitesi katlanarak büyüyecektir. Onun için o isimde yedek alınmışsa önce siliyorum sonra son yedeği almış oluyorum.
RESTORE - Yedeği Yükleme için
string strSql= @"data source=(LocalDB)\MSSQLLocalDB;attachdbfilename=|DataDirectory|\veritabani.mdf;integrated security=True;MultipleActiveResultSets=True;App=EntityFramework";
Cursor.Current = Cursors.WaitCursor;
string yedekyolu = tDosya.Text;
Application.DoEvents();
string str = Application.StartupPath + "\\veritabani.mdf";
using (SqlConnection connection = new SqlConnection(strSql))
{
connection.Open();
//SqlCommand isle = new SqlCommand(@"USE MASTER RESTORE DATABASE[vggt] FROM DISK = N'" + yedekyolu + "' WITH CHECKSUM, RECOVERY, REPLACE, STATS = 10", connection);
SqlCommand isle = new SqlCommand(@"USE master; IF EXISTS(SELECT * FROM sys.databases where name = 'vggt') DROP DATABASE[" + str + "]; RESTORE DATABASE[" + str + "] FROM DISK = N'" + tDosya.Text + "'", connection);
isle.ExecuteNonQuery();
connection.Close();
}
Restore işlemi yaparken veritabanı bağlantılarının olmamasına dikkat ediniz.
Etiketler
Backup
Restore
Entity