PDA

View Full Version : سوال: بکاپ گیری از sql



ghasem110deh
دوشنبه 10 شهریور 1393, 20:22 عصر
سلام به همه
از این کد استفاده کردم واسه بکاپ گیری ولی خطا میده ...

private void Backuper(string filename)
{
try
{
string command = @"BACKUP DATABASE PSI TO DISK=N'" + 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 PSI SET SINGLE_USER with ROLLBACK IMMEDIATE " + " USE master " + " RESTORE DATABASE PSI 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);
}
}


private void button2_Click(object sender, EventArgs e)
{
string filename = string.Empty;
saveFileDialog1.OverwritePrompt = true;
saveFileDialog1.DefaultExt = "";
saveFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
saveFileDialog1.FilterIndex = 1;
// string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Subs tring(0, 10);//بر اساس تاریخ شمسی ذخیره می کند
// saveFileDialog1.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();
saveFileDialog1.Title = "Backup SQL File";
if (saveFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = saveFileDialog1.FileName;
Backuper(filename);
}
}

private void button1_Click(object sender, EventArgs e)
{
string filename = string.Empty;
openFileDialog1.Filter = @"SQL Backup Files ALL Files (*.*) |*.*| (*.Bak)|*.Bak";
openFileDialog1.FilterIndex = 1;
openFileDialog1.Filter = @"SQL Backup Files (*.*)|";

// string DateDay = FarsiLibrary.Utils.PersianDate.Now.ToString().Subs tring(0, 10);
// openFileDialog1.FileName = DateDay.Replace("/", "") + "_" + DateTime.Now.Hour.ToString() + "-" + DateTime.Now.Minute.ToString() + "-" + DateTime.Now.Second.ToString();
if (openFileDialog1.ShowDialog() == DialogResult.OK)
{
filename = openFileDialog1.FileName;
Restore(filename);
}
}
}
}

دلتنگ اسمان
دوشنبه 10 شهریور 1393, 20:38 عصر
سلام .متن خطا چیه؟ تو قسمت BackUp خطا میده یا تو قسمت Restore ?

ghasem110deh
دوشنبه 10 شهریور 1393, 21:44 عصر
سلام
تو قسمت restore ...
این عکس خطا (http://uplod.ir/ulyia9apd0qp/000titled.png.htm) ...

دلتنگ اسمان
سه شنبه 11 شهریور 1393, 07:30 صبح
سلام
تو قسمت restore ...
این عکس خطا (http://uplod.ir/ulyia9apd0qp/000titled.png.htm) ...

چرا لینک عکس رو تو سایت دیگه گذاشتی؟ توی همین پست هم میتونی بذاری.
ولی در هر حال خودم از این کد برای Restore استفاده میکنم.

private void Restore(string strFileName)
{
try
{
if (strFileName != string.Empty)
{
string command =
"ALTER DATABASE matab SET OFFLINE with ROLLBACK IMMEDIATE RESTORE DATABASE matab FROM DISK = '" +
strFileName + "'" +
" WITH REPLACE";
var oConnection =
new SqlConnection("server=localhost;Integrated security=true;database=matab");
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
var oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
MessageBox.Show(". بازيابی اطلاعات از نسخه پشتيبان با موفقيت انجام شد");
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}

ghasem110deh
سه شنبه 11 شهریور 1393, 11:13 صبح
ممنون !
بعد واسه اکسس چون (در واقع کپی بود) میشد پروگرس بار رو پر کرد (فقط قشنگی داشت دیگه)
تو این هر جا استفاده کردم نشد ؟ progresBar.performStep();