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
Mesaj Yaz