سلام ، منظورتون رو از اینکه دیتابیس لوکال باشه نمیگیرم ، پشتبان گیری ربطی به این نداره که ببینیم دیتابیس لوکال هست یا نیست در همون پروژه هم لوکال بود !
این کلاس رو در نظر بگیرید :
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Windows.Forms;
namespace Morrakhasi
{
public class BackupAndRestore
{
private string _connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["Morrakhasi.Properties.Settings.dbConnectionString"].ConnectionString;
private SqlConnection SqlConnection1 = new SqlConnection();
public BackupAndRestore()
{
this.SqlConnection1.ConnectionString = this._connectionString;
}
public void Backup(string filename)
{
try
{
string command = @"Backup DataBase [" + System.Windows.Forms.Application.StartupPath + "\\db.mdf] To Disk='" + filename + "'";
if (SqlConnection1.State != ConnectionState.Open)
{
SqlConnection1.Open();
}
SqlCommand SqlCommand1 = null;
SqlCommand1 = new SqlCommand(command, this.SqlConnection1);
SqlCommand1.ExecuteNonQuery();
MessageBox.Show("تهیه نسخه پشتیبان از اطلا عات با موفقیت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("Error : " + ex.Message, ex.Message);
}
}
public void Restore(string filename)
{
try
{
string command = @"ALTER DATABASE [" + System.Windows.Forms.Application.StartupPath + "\\db.mdf] SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE master " + " RESTORE DATABASE [" + System.Windows.Forms.Application.StartupPath +"\\db.mdf] FROM DISK= N'" + filename + "'";
SqlCommand SqlCommand1 = null;
if (SqlConnection1.State != ConnectionState.Open)
{
SqlConnection1.Open();
}
SqlCommand1 = new SqlCommand(command, this.SqlConnection1);
SqlCommand1.ExecuteNonQuery();
MessageBox.Show("بازیابی اطلاعات از نسخه پشتیبان از با موفقیت انجام شد");
}
catch (Exception ex)
{
MessageBox.Show("Error : ", ex.Message);
}
}
}
}
کلاس بالا رو به پروژتون اضافه کنید . همچنین دیتابیس رو در مسیر فایل اجرایی برنامه قرار بدین . در کلاس بالا فرض شده استم پایگاه داده db هست می تونید تغییرش بدین .
نحوه ی استفاده از کلاس بالا :
Restore :
private void cmdRestore_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
string filename = string.Empty;
openFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Filter = @"SQL Backup Files (*.*)|";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = openFileDialog1.FileName;
BackupAndRestore objBackupAndRestore = new BackupAndRestore();
objBackupAndRestore.Restore(filename);
}
}
Backup :
private void btnBackup_Click(object sender, EventArgs e)
{
SaveFileDialog saveFileDialog1 = new SaveFileDialog();
string filename = string.Empty;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.DefaultExt = "";
saveFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = saveFileDialog1.FileName;
BackupAndRestore objBackupAndRestore = new BackupAndRestore();
objBackupAndRestore.Backup(filename);
}
}