PDA

View Full Version : restore database



mohsen_metn
چهارشنبه 23 بهمن 1387, 17:24 عصر
سلام
میدونم سوالم تکراریه ولی باور کنید تمام سایت رو گشتم ولی مشکلم حل نشد
من برای ریستور کردن دیتا بیس به این طریق عمل می کنم ولی خطا می ده:


openFileDialog1.ShowDialog();
string path = openFileDialog1.FileName.ToString();
MessageBox.Show(path);
SqlConnection connection = new SqlConnection(@"Integrated Security=SSPI;Persist Security Info=False;Data Source=.\SQLEXPRESS");
connection.Open();
string ad;
ad = "use master ";
ad = ad + " RESTORE DATABASE club ";
ad = ad + " FROM DISK = @path WITH RECOVERY, REPLACE ";
//ad = ad + " RETURN ";
SqlCommand comm = new SqlCommand(ad, connection);
comm.Parameters.AddWithValue("@path", openFileDialog1.FileName.ToString());
comm.ExecuteNonQuery();
connection.Close();


متن خطا



Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

slashslash2009
چهارشنبه 23 بهمن 1387, 18:30 عصر
قبلا هم بحث شده باید یه سرچی می کردی بعدم این دیگه چه جور کدی هستش


ad = "use master ";
ad = ad + " RESTORE DATABASE club ";
ad = ad + " FROM DISK = @path WITH RECOVERY, REPLACE ";


همه رو می تونی تو یه خط بنویسی چه کاریه آخه فقط پیچیدش کردی. ازایم کد استفاده کن:


string query = "USE master RESTORE DATABASE [databasename] FROM DISK ='" + strFileName + "'WITH REPLACE";

هر جا که بانکت هست همونجا replace میکنه یعنی روش کپی میکنه در ضمن اگرم اتک نباشه خودش اتکش میکنه.
در ضمن کانکشن استرینگتم مشگل داره ازین استفاده کن :


con.ConnectionString = "Data Source=.;Initial catalog=master;Integrated Security=true";

mohsen_metn
چهارشنبه 23 بهمن 1387, 19:05 عصر
قبلا هم بحث شده باید یه سرچی می کردی بعدم این دیگه چه جور کدی هستش

همه رو می تونی تو یه خط بنویسی چه کاریه آخه فقط پیچیدش کردی. ازایم کد استفاده کن:


string query = "USE master RESTORE DATABASE [databasename] FROM DISK ='" + strFileName + "'WITH REPLACE";

هر جا که بانکت هست همونجا replace میکنه یعنی روش کپی میکنه در ضمن اگرم اتک نباشه خودش اتکش میکنه.
در ضمن کانکشن استرینگتم مشگل داره ازین استفاده کن :


con.ConnectionString = "Data Source=.;Initial catalog=master;Integrated Security=true";

حالا این ارور رو میده


An error has occurred while establishing a connection to the server. When connecting to SQL Server 2005, this failure may be caused by the fact that under the default settings SQL Server does not allow remote connections. (provider: Named Pipes Provider, error: 40 - Could not open a connection to SQL Server)

mohsen_metn
چهارشنبه 30 بهمن 1387, 12:41 عصر
کسی نمی توناه به من کمک کنه؟

danial82
شنبه 03 اسفند 1387, 13:44 عصر
دوست عزیز یه pdf درمورد BAckup/Restore تو سایت گذاشتم
البته از اینجا (http://freecomponents.blogfa.com/post-5.aspx) هم میتوانی بگیری

saied_genius
شنبه 03 اسفند 1387, 17:58 عصر
جناب mohsen_metn

براي RESTORE كرد ديتابيس SQL شما بايد ابتدا دسترسي به بانك را محدود به يك دسترسي نماييد. (كه آ ن هم دسترسي خود Restore است)

و سپس اقدام به RESOTRE نماييد.

براي دسترسي محدود :



ALTER DATABASE MyDatabase SET SINGLE_USER


و يا



EXEC sp_dboption 'MyDataBaseName','single user','TRUE'


و سپس از هر نوع RESTORE كه دوست داري استفاده كن.

همان RESTORE كه استفاده كرده اي خوب است از همان استفاده كن.
و يا از لينك زير استفاده كنيد.

http://barnamenevis.org/forum/showthread.php?t=120434&page=3

**نكته: تنظيم ديتابيس به حالت تك كاربره پس از بازيابي اطلاعات به صورت اتوماتيك به حالت چند كاربره باز مي گردد.

موفق باشيد.