مبدأيا لدي ملاحظة تتعلق بجملة الاستعلام التي استخدمتها لاستعادة النسخة الاحتياطية
انت استخدمت الجملة التالية
كود :
("RESTORE DATABASE " & cmbdatabase.Text & " FROM disk='" & OpenFileDialog1.FileName & "'")
هذه الجملة تستعيد نسخة احتياطية لقاعدة بيانات موجودة اما اذا كانت غير موجودة فسيتم انشاءها
وفي حال كانت قاعدة البيانات موجودة فستم الاستعادة بنجاح شرط ان لا تكون قاعدة البيانات قيد الاستخدام اما اذا كانت قيد الاستخدام فستفشل الاستعادة ويظهر خطأ طبعا انت ستقول لي ان قاعدة البيانات ليست قيد الاستخدام انا ارد عليك انه في كثير من الاحيان نغلق جميع الاتصالات بقاعدة البيانات ولكن تبقى قيد الاستخدام وهذا يفسر ان الكود الاول الذي استخدمته انت ينجح احيانا واحيانا لا وعند الاستخدام الطويل لبرنامجك سيظهر لك انه حتى من المخدم الرئيسي ستظهر مشاكل
ولكن هناك جملة استخدام اخرى لحل هذه المشكلة على الشكل الاتي
كود :
"ALTER DATABASE " & DATABASEE & " SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE " & DATABASEE & " From Disk ='" + OpenFileDialog1.FileName + "' ALTER DATABASE " & DATABASEE & " SET ONLINE WITH ROLLBACK IMMEDIATE"
المتغير databasee يحمل اسم قاعدة البيانات
في هذا الامر يقم بتحويل قاعدة البيانات الى الوضع offline ثم يجري عملية الاستعادة ثم يرجع قاعدة البيانات الى الوضع online ولكن هذا اذا كانت قاعدة البيانات موجودة اما اذا كانت غير موجودة مثل انه تم حذفها بالخطأ فعندئد لن تتم الاستعادة وستظهر رسالة الخطأ
------
ومن خلال بحثيي وتجربتي وجدت انه اغلب الشروحات على مواقع النت على اليوتيوب عند شرح الاستعادة يستخدمون جملة واحدة
وانا برأيي لا بد من استخدمام الكودين ضمن جملة شرطية
اولا نستعلم عن جميع قواعد البيانات ثم في حال كانت قاعدة البينات موجودة يتم استخدام الاستعلام الثاني الذي ذكرته لك اما اذا كانت قاعدة البيانات غير موجودة فعندئذ نستخدم الاستعلام الثاني الذي ذكرته لك
******
ارجو ان تكون الفكرة وصلت