PDA

View Full Version : سوال: Restore كردن ديتابيس در #C



mehrnoosh_al62
شنبه 04 خرداد 1387, 12:40 عصر
سلام. من یه برنامه دارم که توش از database های موجود در سیستم backup میگیره اما وقتی تو همین برنامه میخوام restor کنم خطای زیر اتفاق می افته :

Exclusive access could not be obtained because the database is in use.
RESTORE DATABASE is terminating abnormally.

اگه کسی میتونه کمکم کنه...

ASKaffash
شنبه 04 خرداد 1387, 14:42 عصر
با سلام
برای بررسی یک قطعه کد قرار دهید تابشود کمک کرد

mehrnoosh_al62
شنبه 04 خرداد 1387, 15:26 عصر
مشکل قبلیم حل شده اما یه مشکل جدید دارم. من تو برنامم دو نوع backup از database های سیستم دارم.
1- یک backup از کل یک database که restore کردن آن حل شد.

"use master " +
"ALTER DATABASE " + [database_name]+ " SET SINGLE_USER with ROLLBACK IMMEDIATE " +
"RESTORE DATABASE " + [database_name]+ " FROM DISK='" + path+ "'";

2- اما تو یه حالت من از بعضی جداول یه بانک backup گرفتم به این صورت که ابتدا یک database جدید ساختم (create database db_name)
بعد همه جدول هایی که میخواستم ازشون backup بگیرم رو با دستور select * into به database جدید کپی کردم و از database جدید backup گرفتم و بعد اون رو حذف کردم.
حالا مشکلم این جاست که نمیدونم چجوری باید این backup رو restore کنم.

ASKaffash
شنبه 04 خرداد 1387, 16:05 عصر
با سلام
مثل Backup که گرفته ای باز هم باید دستی مدیریت جداول را انجام دهید(یه کم سخته ولی میشه)

combo_ci
سه شنبه 07 خرداد 1387, 00:48 صبح
منم اين مشكل رو داشتم .... لالاخره با يك قطعه كد تونستم مشكلم رو حل كنم...در واقع اشكال كار اينجاست كه database شما در حال استفادست...با اين قطعه كد ارتباتاط با databse رو قطع كن و بعدش restore كن


string sqltxt = "use master " +
" alter database " + AppName + "OLD" +
" set offline with rollback immediate " +
" alter database " + AppName + "OLD" +
" set online "

به جاي appname اسم databse رو بزار در يك sql command اجرا كن