بکاپ و ریستور پایگاه داده 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 + "' WITH REPLACE";
//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);
}
}
دانلود برنامه فوق با C#.Net 2010
دوست عزیز ممنون از راهنماییتون.فقط یه مشکل دیگه هست اونم اینکه این کد فقط برای ذخیره در Desktop امکان داره و وقتی که میخوام اونو توی یه درایو ذخیره کنم مشکل داره و ارور میده.لطفا در این مورد هم راهنمایی کنین ممنون