ورود

View Full Version : backup گیری از طریق برنامه #c



ILYA
دوشنبه 20 مهر 1383, 13:59 عصر
سلام به همه دوستان
من می خوام از طریق برنامه #c از پایگاه داده ام backup بگیرم ، همچنین امکان restore هم وجود داشته باشه .
آیا من می تونم به صورت زیر این کار را انجام بدهم آیا این کار اصولی هست .
چه راه دیگه ای ممکن وجود داشته باشه ، میشه برام توضیح بدید ؟

private void btnback_Click(object sender, System.EventArgs e)
{
System.Data.SqlClient.SqlCommand cm1 = new System.Data.SqlClient.SqlCommand();
cm1.Connection=sqlConnection1;
saveFileDialog1.ShowDialog();
string filenames=saveFileDialog1.FileName;
cm1.CommandText = "BACKUP DATABASE dbname to DISK ='"+filenames+"'";
cm1.ExecuteNonQuery();
}
private void restore_Click(object sender, System.EventArgs e)
{
System.Data.SqlClient.SqlCommand cm2 = new System.Data.SqlClient.SqlCommand();
cm2.Connection=sqlConnection1;
openFileDialog1.ShowDialog();
string filenames=openFileDialog1.FileName;
cm2.CommandText = "RESTORE DATABASE dbname FROM DISK ='"+filenames+"'";
cm2.ExecuteNonQuery();
}

ببخشید که این طوری شد .

AminSobati
دوشنبه 20 مهر 1383, 21:15 عصر
ایلیا جان،
درست یا غلط بودن این کار دقیقا به سناریوی شما بستگی داره. ضمن اینکه من دقیقا نمیدونم صحت این کار رو از چه جهت سوال میکنین. وقتی که این کد بدون باگ کار میکنه، پس یعنی کار درسته. اما از دید یک Admin، ایده آل بودن کار، بستگی به این داره که:
1) حجم دیتابیس شما چقدره و نتیجه Backup چه حجمی پیدا خواهد کرد (و چقدر طول میکشه)
2) آیا برگرداندن دیتابیس به نقطه خاصی از زمان (Point in time recovery) جزء نیازها به شمار میره یا نه
و پارامترهای ریز و درشت دیگه...
برای یک دیتابیس ساده (نه خیلی حساس و پر اهمیت) و کم حجم، Complete Backup شاید کار مناسبی باشه. ولی اگر حجم دیتابیس زیاده و باید سرعت Backup بالا باشه، Differential انتخاب بهتریه. اگر Point in time recovery مد نظر باشه، Backupهای منظم از Log File باید وجود داشته باشه.
لذا با دقیقتر بیان کردن نیاز خودتون، دریافت پاسخ دقیق تر رو امکان پذیر میکنین.
موفق باشید