PDA

View Full Version : مشکل در پشتیبان گیری از دیتابیس



eletcomp
جمعه 23 اسفند 1392, 23:19 عصر
با سلام بر عزیزان
من یک تکه کد پیدا کردم از توی یک فیلم اموزشی ولی زمانیکه که ان کد را اجرا میکنم:میگه خطا در پشتیبان گیری!!گمان کنم ادرس دهی من مشکل داره!! ولی نمیدونم چطور باید ادرس دهی درست را عمال کنم!!!
چند نکته: من دارم از نسخه کامل sql server 2008 استفاده می کنم نه نسخه express خود ویژوال 2010 !!!
و اینکه توی برنامه ام فایل app.config برای گرفتن ادرس وجود نداره!! چه کار باید کنم!!؟؟
چند تا پست من در همین مورد سرچ کردم و خوندم ولی متوجه نشدم:لطفا مدیران گرامی پست من را حذف نکنند!!
سپاس


private void backup_Click(object sender, EventArgs e)
{


SaveFileDialog sv = new SaveFileDialog();
sv.FileName = DateTime.Now.ToString("ddMMyyyy_HHmmss");
sv.Filter = "BackupFile(*.Bak)|*.Bak";
if (sv.ShowDialog() == DialogResult.OK)
{
try
{
this.Refresh();
SqlCommand cmd = new SqlCommand();
cmd.Connection = new SqlConnection(@"Data Source=.;Initial Catalog=Wdays;Integrated Security=True");
cmd.Connection.Open();
string dbname = cmd.Connection.Database;
cmd.Connection.Close();
SqlConnection.ClearAllPools();
string query = "BACKUP DATABASE [" + Application.StartupPath + @"\Wdays.mdf] TO DISK=' " + sv.FileName + " ' ";
cmd.Connection = new SqlConnection(@"Data Source=.;Initial Catalog=Wdays;Integrated Security=True");
cmd.Connection.Open();
cmd.CommandText = query;
cmd.ExecuteNonQuery();
cmd.Connection.Close();
this.Refresh();


MessageBox.Show("پایگاه داده با موفقیت پشتیبان گیری شد");
}
catch
{


MessageBox.Show("خطا در پشتیبان گیری");
}




}

mohammadsamadi1377
جمعه 23 اسفند 1392, 23:26 عصر
اسکیوال کانکشنت مشکل داره
از این استفاده کن ( یه کلاس کامل هم برای اکسپرس هم معمولی ) تشکر یادت نره


public static void Backup(string strFileName, string DBName, bool IsSQLExpress, Form FrmName) {
try
{
string command = @"BACKUP DATABASE " + DBName + " TO DISK='" + strFileName + "'";
FrmName.Cursor = Cursors.WaitCursor;
SqlCommand oCommand = null;
SqlConnection oConnection = null;
if (IsSQLExpress == false)
{
oConnection = new SqlConnection(@"Data Source=.;Initial Catalog=" + DBName + ";Integrated Security=True;");
}
else if (IsSQLExpress == true)
{
oConnection = new SqlConnection(@"Data Source=.\sqlexpress;Initial Catalog=" + DBName + ";Integrated Security=True;");
}
if (oConnection.State != ConnectionState.Open)
oConnection.Open();
oCommand = new SqlCommand(command, oConnection);
oCommand.ExecuteNonQuery();
FrmName.Cursor = Cursors.Default;
MessageBox.Show("پشتیبان گیری با موفقیت صورت گرفت");
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message, "خطا", MessageBoxButtons.OK);
}
}

eletcomp
جمعه 23 اسفند 1392, 23:43 عصر
ممنون دوست عزیز: من مبتدی هستم :میتونی بگی این کد را کجا باید بزارم!!؟؟؟ جایگزین چی باید بشه؟؟
در ضمن اگر بگی کد من کجاش مشکل داره دقیقا و چطور میتونم اصلاحش کنم خیلی عالی میشه چون کد خودم برام قابل فهم تر!!
سپاس

eletcomp
شنبه 24 اسفند 1392, 10:12 صبح
عزیزان لطفا راهنمایی کنید!!

mohammadsamadi1377
شنبه 24 اسفند 1392, 14:52 عصر
این یه کلاسه اون رو آخر کد هات پیست کن و به صورت زیر فراخانی کن

Backup(آدرس محل ذخیره, نام دیتابیس, False, نام فرم )

eletcomp
شنبه 24 اسفند 1392, 15:48 عصر
ممنون: زمانی که اخر کدها پیست کردم!! در کجا باید فراخوانی کنم؟؟ یعنی جای خاصی برای فراخوانی داره؟؟؟ فرم یا دکمه .......؟؟؟
سپاس

mohammadsamadi1377
شنبه 24 اسفند 1392, 16:53 عصر
بله توی دکمه فراخونی بشه

pcweb99
یک شنبه 20 مهر 1393, 14:41 عصر
سلام ممونم بخاطر ایجاد و پاسخگویی این پست.
برای بازیابی جداول دیتابیس باید چیکار کرد؟ میشه کد بازیابی رو هم آموزش بدین؟ممنون میشم

Mansoor92
یک شنبه 20 مهر 1393, 16:33 عصر
این کد ریستور هست


public string Restore(string Path)
{
string strcom = "alter database {0} SET SINGLE_USER WITH ROLLBACK IMMEDIATE ;restore database {0} from disk ='{1}'WITH REPLACE;ALTER DATABASE {0} SET MULTI_USER";
strcom = string.Format(strcom, DBName, Path);
cmd.Connection = conDbAssistant;
cmd.CommandText = strcom;
try
{
conDbAssistant.Open();
cmd.ExecuteNonQuery();
return "OK";
}
catch (Exception ex)
{
return ex.Message;
}
finally
{
conDbAssistant.Close();
}

}

davidrobert
دوشنبه 21 مهر 1393, 09:12 صبح
سلام دوسا عزیز این کد استفاده کن خیلی عالی هستش و فقط ریستور و بکاپ تو درایوی غیر درایو ویندوز بگیر و جواب میگیری کد خیلی عالی هستش هم ریستور و هم بکاپ میگیره و هم دیتابیس وجود نداشته باشه با ریستور دیتابیس هم ایجاد میکنه. در اسکویل سرور.http://uplod.ir/legohqy5flsp/Backup_Restore.7z.htm