# برنامه نویسی با محصولات مایکروسافت > برنامه نویسی مبتنی بر Microsoft .Net Framework > دسترسی به داده ها (ADO.Net و LINQ و ...) >  چگونه می تونم  از SQL Server Express در سی شارپ  Back upبگیرم و Restor کنم؟

## hamedkhodaei

*چگونه می تونم  از SQL Server Express در سی شارپ  Back upبگیرم و Restor کنم؟
*ممنون میشم من را راهنمایی کنید.

----------


## saeed2rele

یکی از دوستان اینجا یه برنامه گذاشته که این کار رو به سادگی نشون میده.
اما این روش نمیدونم چرا برای من جواب نمیده و بعد از ریستور بانک اطلاعاتی بانک خراب میشه.
علتشرو بالاخره نفهمیدم. اما راه حل دیگه اینه که فایل بانک اطلاعاتی رو از USE خارج کنی و فایل بانک و فایل لوگ رو زیپ کنی و به کاربر تحویل بدی برای برگشت هم باید از زیپ خارج کنی و سر جای اصلیش ریپلیس کنی. این روش (دومی)فقط در SQL Server Express امکان داره چون در نسخه های دیگه وقتی فایل بانک اتچ شد دیگه نمیشه از اون کپی تهیه کرد یا ریپلیس کرد

----------


## hamedkhodaei

اگه ممکنه یک نمونه سورس کد بزارید.
باتشکر

----------


## hamedkhodaei

اگر کسی سورس داره بزاره من واقعا نیاز دارم .

----------


## amir_pro

چون این دو تا فایل جایی Attach نمیشند میتونی مثل فایل mdb اکسس کپی کنی فقط باید بعد از کپی کردن مقدار connection string را هم عوش کنی و مقدار مسیر جدید را بدی.

----------


## M.YasPro

سلام من اینو دارم:


 
privatevoid btnBackUp_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
saveFileDialog1.DefaultExt = "bak";
saveFileDialog1.FileName = "(" + "DB" + ")" + "(" + DateTime.Now.Hour + "-" + DateTime.Now.Minute + ")";
saveFileDialog1.Filter = @"sql Backup file (*.bak) | *.bak|all files (*.*) | *.*";
saveFileDialog1.FilterIndex = 1;
saveFileDialog1.OverwritePrompt = true;
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
Application.DoEvents();
strFileName = saveFileDialog1.FileName;
Backup(strFileName);
}
}
 
 
 
 
privatevoid Backup(string strFileName)
{
 
string command = @"backup database DB to disk='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source="+Server.ToString()+";Initial Catalog=DB;User id=sa;password=pwd");
if (oConnection.State != ConnectionState.Open)
{
oConnection.Open();
}
oCommand = newSqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
oConnection.Close();
this.Cursor = Cursors.Default;
}





برای Restore هم :



 
privatevoid btnRestore_Click(object sender, EventArgs e)
{
string strFileName = string.Empty;
openFileDialog1.Filter = @"sql backup file (*.bak) | *.bak|all files (*.*) |*.*";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Title = "ں«¢هں§ى ںھ هںیé پ¬¢ی ںë";
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
Application.DoEvents();
strFileName = openFileDialog1.FileName;
restore(strFileName);
}
}
privatevoid restore(string strFileName)
{
try
{
string command = "alter database DB set single_user with rollback immediate " + "use master " + " restore database DB from disk='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
oConnection = newSqlConnection("Data Source="+ Server.ToString() +";Initial Catalog=DB;User id=sa;password=pwd");
if (oConnection.State != ConnectionState.Open)
{
oConnection.Open();
}
oCommand = newSqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
oConnection.Close();
this.Cursor = Cursors.Default;
}

----------

