PDA

View Full Version : سوال: نحوه restore کردن به صورتی که اطلاعات به اطلاعات قبلی اضافه شود



anis71
چهارشنبه 13 بهمن 1389, 13:35 عصر
من یک برنامه دارم که توش از اطلاعاتم بک آپ میگیرم اما می خوام وقتی اطلاعات رو restore می کنم به اطلاعات اضافه بشه.برای اینکار دوستان پیشنهاد دادن که خودم به صورت دستی این کار رو بکنم.
اولین راهی که به ذهنم رسید این بودکه فایل بک آپ رو روی یه بانک دیگه restore کنم تا بتونم اطلاعات اون بانک جدید رو با بانک فعلی مقایسه کنم و اطلاعات جدید رو اضافه کنم که اصلا اجازه این کار رو نمیده که بک آپ یک فایل رو روی یک بانک دیگه restore کنم و با ارور مواجه شدم.
دومین راه این بود که از بانک کپی بگیرم و اطلاعات اون بانک کپی شده رو با بانک فعلی مقایسه کنم و اطلاعات جدید رو اضافه کنم که در کپی کردن با مشکل مواجه شدم من برای کپی کردن از این کد استفاده کردم:



SqlConnection sqlcon = new SqlConnection("Data Source=.\\SQLEXPRESS;initial catalog=master;Integrated security=true");
SqlDataAdapter sqlda = new SqlDataAdapter();
sqlda.SelectCommand = new SqlCommand();
sqlda.SelectCommand.Connection = sqlcon;
DataTable s1 = new DataTable();
sqlda.SelectCommand.CommandText = "select * from sys.databases where name='" + AppDomain.CurrentDomain.BaseDirectory + "db\\Database1.mdf'"; sqlcon.Open();
sqlda.SelectCommand.ExecuteNonQuery();
sqlda.Fill(s1);



if (s1.Rows.Count > 0)
{
sqlda.SelectCommand.CommandText = "sys.sp_detach_db '" + AppDomain.CurrentDomain.BaseDirectory + "db\\Database1.mdf'"; sqlda.SelectCommand.ExecuteNonQuery();
}
sqlcon.Close();
SqlConnection.ClearPool(sqlcon);
sqlcon.Dispose();
string root = (Directory.CreateDirectory(folderBrowserDialog1.Se lectedPath + "BackUp" + DatePath()).FullName);
File.Copy(Application.StartupPath + @"\Databases\Database.mdf", root + "\\Database.mdf", true);
File.Copy(Application.StartupPath + @"\Databases\Database_log.ldf", root + "\\Database_log.ldf", true);


اما بازم ارور داره که این بانک در حال استفاده است.دوستان اگه می تونید کمک کنید
تشکر

hossin.esm
چهارشنبه 13 بهمن 1389, 14:58 عصر
یک نمونه برای(backup - restore)
http://barnamenevis.org/showthread.php?64210-نمونه-برنامه-های-کوچک-و-مفيد-در-سي-شارپ&p=1172369&viewfull=1#post1172369

یک نمونه برای( attach -detach)
http://barnamenevis.org/showthread.php?64210-نمونه-برنامه-های-کوچک-و-مفيد-در-سي-شارپ&p=1182007&viewfull=1#post1182007

در رابطه با مشکل اول میتونید یک بانک دیگه از همین نوع بانک attach و بعد backup را روی ان restore و مقایسه کنید

anis71
چهارشنبه 13 بهمن 1389, 15:17 عصر
من برایbackup - restore مشکلی ندارم.می خوام طوری restore انجام بشه که اطلاعات به اطلاعات قبلی اضافه بشه.
اون قسمت کپی هم یه مشکل جالب پیدا کرده هرموقع برنامه را خط به خط اجرا می کنم (با f10) درست انجام میشه ولی بدون خط به خط ارور میده!!!!!!!!!!!!!!
ور در مورد اینکه گفتید"ک بانک دیگه از همین نوع بانک attach و بعد backup را روی ان restore و مقایسه کنید" منم می خوام با کپی هم کار رو انجام بدم دیگه.می خوام کپی بگیرم و مقایسه کنم که اجازه کپی کردن نمیده

hossin.esm
چهارشنبه 13 بهمن 1389, 15:38 عصر
مثال detach را هم گذاشتم میتونی بعد از detach کردن از فایل کپی بگیری.

anis71
پنج شنبه 14 بهمن 1389, 22:48 عصر
یه سوال:بعد از هر بار detach کردن باید دوباره بانک رو اتچ کنم؟؟؟؟؟؟
میشه برام مثالشا بزارید این مثالی که گذاشتید کد اتچ نداره!!!!!
تشکر

hossin.esm
پنج شنبه 14 بهمن 1389, 22:55 عصر
بله باید اتچ بشه
تو مثال هم هست. همون کانکشن attach را انجام میده
تو لینک زیر هم هست.
http://irancsharp.net/Post-58.aspx

debugger
جمعه 15 بهمن 1389, 00:55 صبح
بجای ابن همه کار موقع کپی کردن سرویس sql را stop کن و بعد پایان کپی اونو start کن

hossin.esm
جمعه 15 بهمن 1389, 08:47 صبح
بجای ابن همه کار موقع کپی کردن سرویس sql را stop کن و بعد پایان کپی اونو start کن
دوست عزیز پیشنهاد شما خوبه
ولی ممکنه نرم افزار های دیگه در حال استفاده از sql باشند که باعث اختلال در عملکرد آنها میشه. (البته چون زمان خیلی زیاد نیست شاید مهم نباشه)

anis71
جمعه 15 بهمن 1389, 12:25 عصر
خیلی از مشکلاتم حل شد.بازم ممنون