خطأ في النسخ الإحتياطي
#1
السلام عليكم ورحمة الله وبركاته...
لقد قمت بكتابة الكود التالي لعمل نسخة إحتياطية:
PHP كود :
SaveDialog1.Execute  ;
ADOCommand1.CommandText := 'BACKUP DATABASE alyamama TO  DISK = '''+SaveDialog1.FileName+'.bak''' ;
ADOCommand1.Execute ; 

ولم يظهر أية رسالة خطأ عند التنفيذ
وقمت بكتابة الكود التالي لإستعادة النسخة:
PHP كود :
OpenDialog1.Execute  ;
ADOCommand1.CommandText := 'RESTORE DATABASE alyamama FROM  DISK = '''+OpenDialog1.FileName+'.bak''' ;
ADOCommand1.Execute ; 

ولكن ظهرت الرسالة التالية عند التنفيذ:
[صورة: 790707089.jpg]

فأفيدوني جزاكم الله خيراً..
الرد
#2
نسيت أن أذكر أن قاعدة البيانات Sql server2000
الرد
#3
و عليكم السلام و رحمة الله و بركاته

OpenDialog1.FileName تأخذ أيضا إمتداد الملف , يعني لا داعي لإظافة الإمتداد
عن الإستدعادة !!
بالتوفيق,,
I'M Fly Like A G6

الرد
#4
جزاك الله خيراً أخي TF6M
ولكن بعد ما أصلحت الكود ظهرت لي الرسالة التالية:
[صورة: 643133328.jpg]
ً
الرد
#5
قم باغلاق الاتصال بملفات قواعد البيانات قبل القيام بالنسخ الاحتياطي
الرد
#6
السلام عليكم
إقتباس :قم باغلاق الاتصال بملفات قواعد البيانات قبل القيام بالنسخ الاحتياطي
أو أضف إلى الـ CommandText

كود :
ALTER DATABASE alyamama SET SINGLE_USER WITH ROLLBACK IMMEDIATE
قبل RESTORE
و
كود :
ALTER DATABASE alyamama SET MULTI_USER
بعد OpenDialog1.FileName


بالتوفيق
الرد
#7
لدي نفس مشكلة الاخ
قمت بعمل ما سبق ولكن لا يعمل استعادة قاعدة البيانات

الكود ينفذ بدون مشاكل ولكن لا يعمل استعادة قاعدة البيانات

هذا هو الكود الذي كتبته

كود :
OpenDialog1.Execute ; ADOCommand1.CommandText := 'ALTER DATABASE PERSONNEL_DATA SET SINGLE_USER WITH ROLLBACK IMMEDIATE '; ADOCommand1.CommandText := 'RESTORE DATABASE PERSONNEL_DATA FROM DISK = ''' + OpenDialog1.FileName + ''''; ADOCommand1.CommandText := 'ALTER DATABASE PERSONNEL_DATA SET MULTI_USER'; ADOCommand1.Execute ;
الرد
#8
السلام عليكم

CommandText ليست sql.add
لذا أخذت آخر قيمة معطاة
كود :
ADOCommand1.CommandText := 'ALTER DATABASE PERSONNEL_DATA SET MULTI_USER';
جرب التالي
كود :
mystr:='ALTER DATABASE PERSONNEL_DATA SET SINGLE_USER WITH ROLLBACK IMMEDIATE '+ ' RESTORE DATABASE PERSONNEL_DATA FROM DISK = '''+ OpenDialog1.FileName + ''''+ ' ALTER DATABASE PERSONNEL_DATA SET MULTI_USER'; ADOCommand1.CommandText :=mystr;
بالتوفيق
الرد
#9
السلام عليكم ورحمة الله وبركاته...
أخي الكريم Lam.Abdeldjalil عندما طبقت هذا الكود:
كود :
mystr:='ALTER DATABASE PERSONNEL_DATA SET SINGLE_USER WITH ROLLBACK IMMEDIATE '+ ' RESTORE DATABASE PERSONNEL_DATA FROM DISK = '''+ OpenDialog1.FileName + ''''+ ' ALTER DATABASE PERSONNEL_DATA SET MULTI_USER'; ADOCommand1.CommandText :=mystr;

توقف البرنامج عن العمل فما هي المشكلة؟؟
الرد
#10
و عليكم السلام و رحمة الله و بركاته

المشكلة أنك لم تغير PERSONNEL_DATA إلى إسم قاعدة بياناتك !!

+ تفصيل من المفروض هذه تعمل دون مشكل Smile :
كود :
use master ALTER DATABASE [COLOR=DarkGreen]mydb [/COLOR]SET SINGLE_USER WITH ROLLBACK IMMEDIATE RESTORE DATABASE [COLOR=DarkGreen]mydb [/COLOR]FROM DISK =[COLOR=Red]'c:\ba.bak' [/COLOR] with [COLOR=Magenta]Replace[/COLOR] ALTER DATABASE [COLOR=DarkGreen]mydb [/COLOR]SET MULTI_USER
يمكن متابعة كل خصائص الـ Restore ( إسترجاع في ملف آخر ، إنشاء مرآة ...) هنا
كود :
http://msdn.microsoft.com/en-us/library/ms186858.aspx
بالتوفيق
الرد


التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم