PDA

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



hamedkhodaei
سه شنبه 27 مرداد 1388, 00:37 صبح
چگونه می تونم از SQL Server Express در سی شارپ Back upبگیرم و Restor کنم؟
ممنون میشم من را راهنمایی کنید.

saeed2rele
سه شنبه 27 مرداد 1388, 01:53 صبح
یکی از دوستان اینجا (http://barnamenevis.org/forum/showpost.php?p=771636&postcount=317)یه برنامه گذاشته که این کار رو به سادگی نشون میده.
اما این روش نمیدونم چرا برای من جواب نمیده و بعد از ریستور بانک اطلاعاتی بانک خراب میشه.
علتشرو بالاخره نفهمیدم. اما راه حل دیگه اینه که فایل بانک اطلاعاتی رو از USE خارج کنی و فایل بانک و فایل لوگ رو زیپ کنی و به کاربر تحویل بدی برای برگشت هم باید از زیپ خارج کنی و سر جای اصلیش ریپلیس کنی. این روش (دومی)فقط در SQL Server Express امکان داره چون در نسخه های دیگه وقتی فایل بانک اتچ شد دیگه نمیشه از اون کپی تهیه کرد یا ریپلیس کرد

hamedkhodaei
سه شنبه 27 مرداد 1388, 08:06 صبح
اگه ممکنه یک نمونه سورس کد بزارید.
باتشکر

hamedkhodaei
چهارشنبه 28 مرداد 1388, 15:05 عصر
اگر کسی سورس داره بزاره من واقعا نیاز دارم .

amir_pro
چهارشنبه 28 مرداد 1388, 15:23 عصر
چون این دو تا فایل جایی Attach نمیشند میتونی مثل فایل mdb اکسس کپی کنی فقط باید بعد از کپی کردن مقدار connection string را هم عوش کنی و مقدار مسیر جدید را بدی.

M.YasPro
چهارشنبه 28 مرداد 1388, 15:41 عصر
سلام من اینو دارم:




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;
}