بکاپ و رستور پایگاه داده با سی شارپ

در این پست آموزشی طریقه بکاپ و ریستور پایگاه داده Sql با سی شارپ را در سایت قرار داده ایم. این آموزش بصورت فیلم و یا کتاب نیست بلکه توضیحات لازم برای انجام اینکار در ادامه مطلب سایت گذاشته شده تا کاربران محترم از این آموزش نهایت استفاده رو ببرند. این آموزش بصورت کامل می باشد و بعد از مشاهده این متن بخوبی می توانید بکاپ و ریستور پایگاه داده Sql با سی شارپ را انجام دهید.

 

 

برای گرفتن نسخه پشتیبان (Back Up) از بانک اطلاعاتی SQL و بازگرداندن (Restore) نسخه پشتیبان در برنامه C# از کدهای زیر می توان استفاده کرد :

برای این منظور دو متد به نام های Backup و Restore تعریف میکنیم که کدها به شرح ذیر می باشد :

 

متد اول تهیه نسخه پشتیبان :

 

 

private void Backup(string filename)

{

try

{

string command = @”Backup DataBase DBName To Disk='” + filename + “‘”;

this.Cursor = Cursors.WaitCursor;

SqlCommand ocommand = null;

SqlConnection oconnection = null;

oconnection = new SqlConnection(“Data Source=(local);Initial Catalog=DBName ;user id=sa”);

if (oconnection.State != ConnectionState.Open)

oconnection.Open();

ocommand = new SqlCommand(command, oconnection);

ocommand.ExecuteNonQuery();

this.Cursor = Cursors.Default;

MessageBox.Show(“تهیه نسخه پشتیبان از اطلا عات با موفقیت انجام شد”);

}

catch (Exception ex)

{

MessageBox.Show(“Error : “, ex.Message);

}

}

 

 


متد دیگر بازگرداندن پشتیبان :

 

 

private void Restore(string filename)

{

try

{

string command = @”ALTER DATABASE DBName  SET SINGLE_USER with ROLLBACK IMMEDIATE ” + “ USE master ” + ” RESTORE DATABASE DBName FROM DISK= N'” + filename + “‘”;

//string command = @”RESTORE DATABASE  DBName FROM DISK ='” + filename + “‘ “;

this.Cursor = Cursors.WaitCursor;

SqlCommand ocommand = null;

SqlConnection oconnection = null;

oconnection = new SqlConnection(“Data Source=(local);Initial Catalog=DBName ;user id=sa”);

if (oconnection.State != ConnectionState.Open)

oconnection.Open();

ocommand = new SqlCommand(command, oconnection);

ocommand.ExecuteNonQuery();

this.Cursor = Cursors.Default;

MessageBox.Show(“بازیابی اطلاعات از  نسخه پشتیبان از  با موفقیت انجام شد”);

}

catch (Exception ex)

{

MessageBox.Show(“Error : “, ex.Message);

}

}

برای اینکه مطمئن شویم از اینکه به بانک ارتباطی نداریم از دستور use master استفاده کرده ایم و بعد از بررسی عمل بازگردانی انجام می شود.

 

 


بعد این دو متد به سراغ دکمه هایی برای تهیه پشتیبان و بازگردانی میرویم که به شرح ذیر می باشد :

 

 

private void BackUpBtn_Click(object sender, EventArgs e)

{

string filename = string.Empty;

SaveBackUp.OverwritePrompt = true;

SaveBackUp.DefaultExt = “”;

SaveBackUp.Filter = @”SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak”;

SaveBackUp.FilterIndex = 1;

string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Substring(0, 10);//بر اساس تاریخ شمسی ذخیره می کند

SaveBackUp.FileName = DateDay.Replace(“/”, “”) + “_” + DateTime.Now.Hour.ToString() + “-” + DateTime.Now.Minute.ToString() + “-” +   DateTime.Now.Second.ToString();

SaveBackUp.Title = “Backup SQL File”;

if (SaveBackUp.ShowDialog() == DialogResult.OK)

{

filename = SaveBackUp.FileName;

Backup(filename);

}

}

 

 


 

private void RestoreBtn_Click(object sender, EventArgs e)

{

string filename = string.Empty;

OpenBackUp.Filter = @”SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak”;

OpenBackUp.FilterIndex = 1;

OpenBackUp.Filter = @”SQL Backup Files (*.*)|”;

 

string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Substring(0, 10);

OpenBackUp.FileName = DateDay.Replace(“/”, “”) + “_” + DateTime.Now.Hour.ToString() + “-” + DateTime.Now.Minute.ToString() + “-” + DateTime.Now.Second.ToString();

if (OpenBackUp.ShowDialog() == DialogResult.OK)

{

filename = OpenBackUp.FileName;

Restore(filename);

}

}