PDA

View Full Version : سوال: كد Backup & Restore كردن، به طوري كه فقط روي داده كار كند



Nima_kyan
یک شنبه 19 شهریور 1391, 19:30 عصر
سلام دوستان
من سراغ كد Backup و Restore اي ميگردم كه وقتي Restore كردم فقط داده هاي جداول Restore شن.
بيشتر توضيح بدم. من بك آپ و ريستور رو انجام ميدم بدون مشكل. ولي وقتي ريستور ميشه تمام Stored Procedure هايي هم كه جديد به بانكم اضافه كردم حذف ميشن.
اگه كسي بتونه كمك كنه ممنون ميشم

Nima_kyan
دوشنبه 20 شهریور 1391, 00:55 صبح
دوستان کسی نیست راهنماییم کنه؟؟؟:افسرده:

roolinjax
دوشنبه 20 شهریور 1391, 19:36 عصر
سلام
اگر میشه کد backup و restore رو بذارید تا بررسی بشه شاید کمکی از دستمون بر اومد.

Nima_kyan
سه شنبه 21 شهریور 1391, 09:48 صبح
Backup و Restore مشكلي ندارن انجام ميشن.
كد Backup :

try
{
string command = @"BACKUP DATABASE Mali_Omran TO DISK='" + strFileName + "'";
this.Cursor = Cursors.WaitCursor;
SqlConnection con = new SqlConnection(@"Data Source=(Local); Initial Catalog=Mali_Omran; Integrated Security=True;");
SqlCommand cmd = new SqlCommand(command, con);
if (con.State != ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();
this.Cursor = Cursors.Default;
MessageBox.Show(".تهيه نسخه پشتيبان از اطلاعات با موفقيت انجام شد", "اطلاعات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error,MessageBoxDefaultButton.Butto n1,MessageBoxOptions.RightAlign);
}
و كد Restore :

try
{
string command = "ALTER DATABASE Mali_Omran SET SINGLE_USER with ROLLBACK IMMEDIATE Use master RESTORE DATABASE Mali_Omran FROM DISK='" + strFileName + "' WITH REPLACE";
this.Cursor = Cursors.WaitCursor;
SqlConnection con = new SqlConnection(@"Data Source=(Local); Initial Catalog=Mali_Omran; Integrated Security=True;");
SqlCommand cmd = new SqlCommand(command, con);
if (con.State != ConnectionState.Open)
con.Open();
cmd.ExecuteNonQuery();
this.Cursor = Cursors.Default;

MessageBox.Show(".بازيابي اطلاعات از نسخه پشتيبان با موفقيت انجام شد", "اطلاعات", MessageBoxButtons.OK, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign);
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error Occurd :" + ex.Message, "خطا", MessageBoxButtons.OK, MessageBoxIcon.Error,MessageBoxDefaultButton.Butto n1,MessageBoxOptions.RightAlign);
}

roolinjax
سه شنبه 21 شهریور 1391, 16:49 عصر
با سلام ، شما خیلی به خودت سخت گرفتی ، کد های راحت تری هم هست :
کد بکاپ :
SqlConnection sq = new SqlConnection("Data Source=.;Integrated Security=True");
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "*.bak|*.bak";
if (sfd.ShowDialog() == DialogResult.OK)
{
SqlCommand com = new SqlCommand("backup database " + txtDBName + " to disk='"
+sfd.FileName + "'", sq);
sq.Open();
com.ExecuteNonQuery();
sq.Close();
}//
کد بازیابی :
SqlConnection sq = new SqlConnection("Data Source=.;Integrated Security=True");
OpenFileDialog ofd = new OpenFileDialog();
ofd.Filter = "*.bak|*.bak";
if (ofd.ShowDialog() == DialogResult.OK)
{
string query = "USE [master]; RESTORE DATABASE [" + txtDBName.Text + "] FROM DISK =
N'" +ofd.FileName + " ' WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10";
SqlCommand com = new SqlCommand(query, sq);
sq.Open();
com.ExecuteNonQuery();
sq.Close();
}//

Nima_kyan
سه شنبه 21 شهریور 1391, 19:18 عصر
مرسي از توجه تون roolinjax (http://barnamenevis.org/member.php?208617-roolinjax) .
ولي بالا هم گفتم مشكل من Backup و Restore ام نيست.
در واقع كد من با كد شما در عمل يكي ان.
مشكل من چيزي ديگه است.
بيشتر توضيح ميدم. من چند وقت پيش يه نرم افزار براي يه موسسه نوشتم. حالا ازم خواستن يه سري تغييرات رو برنامه اعمال كنم و تغييرات رو هم اعمال كردم.
خوب تو اين مدت اون موسسه با نرم افزار كار كرده و كلي اطلاعات هم وارد كرده و از اطلاعات هم Backup گرفته. حالا من ورژن جديد نرم افزار رو نصب ميكنم و اطلاعات رو restore ميكنم و كلا بانكم restore ميشه (داده ها و spها)
من ميخوام فقط داده ها Restore شن و sp هايي كه جديد اضافه شدن Restore نشن.
لازم به ذكره ،اصلاحات من فقط در بخش sp ها و كدهاي #C هستش.

roolinjax
سه شنبه 21 شهریور 1391, 19:41 عصر
خوب تنها کاری که میشه کرد اینه که نسخه Management اس کیو ال رو روی سیستم مشتری تون نصب کنین و تغییرات رو دستی اعمال کنید و نهایتا نسخه Management رو پاک کنین.

Nima_kyan
پنج شنبه 23 شهریور 1391, 20:18 عصر
ظاهرا بايد از script نويسي استفاده شه واسه اين كار.
ولي چطور، دقيقا نميدونم..
كسي ميتونه كمك كنه؟؟؟؟؟؟:ناراحت:

FastCode
پنج شنبه 23 شهریور 1391, 23:17 عصر
میتونید همه ی جدول های یک DataSet رو Fill کنید بعد Export کنید
برای کاهش حجم هم میتونید از DeflateStream استفاده کنید.

برای برگردوندن هم میتونید لیست جداول رو به کاربر نشون بدید و هرچقدرش رو که دوست داره برگردونه

(من قبلاً این روش رو به شما نگفتم؟یا کس دیگه ای بود؟)

Nima_kyan
جمعه 24 شهریور 1391, 11:52 صبح
FastCode (http://barnamenevis.org/member.php?109710-FastCode) عزیز اگه بتونید یه کد به عنوان مثال بزاری ممنون میشم

من قبلاً این روش رو به شما نگفتم؟یا کس دیگه ای بود؟
یحتمل همون "یا کس دیگه ای بوده" :چشمک: