منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
إغلاق قاعدة البيانات قبل نسخها - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم أسئلة واستفسارات الأعضاء - المنتدى القديم (http://vb4arb.com/vb/forumdisplay.php?fid=94)
+--- قسم : Microsoft SQL Server (http://vb4arb.com/vb/forumdisplay.php?fid=171)
+--- الموضوع : إغلاق قاعدة البيانات قبل نسخها (/showthread.php?tid=41773)

الصفحات: 1 2 3


إغلاق قاعدة البيانات قبل نسخها - أبو خالد الشكري - 21-06-22

السلام عليكم ورحمة الله وبركاته
مرحبا بالجميع

لو سمحتم كيف يمكنني إغلاق قاعدة بيانات SQL قبل نسخها بواسطة البرنامج
حاولت استخدام الكود التالي ولكن لم ينفع
If Con.State = ConnectionState.Open Then Con.Close

تأتي رسالة خطأ تقول بأن القاعدة قيد التشغيل !

أنتظر ردكم ، وشكرا .


RE: إغلاق قاعدة البيانات قبل نسخها - عبد العزيز البسكري - 21-06-22

راجع الأكواد الأخرى التي قبل عملية النسخ .. أكيد الإتصال يكون مفتوحا في جهة ما



RE: إغلاق قاعدة البيانات قبل نسخها - أبو خالد الشكري - 22-06-22

للأسف لم أتمكن من إغلاق قاعدة البيانات
وهذه الأكواد التي أستخدمها لعملية النسخ ...
كود :
Dim SaveFileDialog1 As New SaveFileDialog
       Dim myDataBaseName As String = "CodesBank" '  اسم قاعدة البيانات الافتراضي
       Dim ThisDay As String = " (Date " & Today.Day & "_" & Today.Month & "_" & Today.Year & " Time " & My.Computer.Clock.LocalTime.ToString("hh_mm_ss") & ")"
       Dim MyBackupFileName As String = myDataBaseName & ThisDay & ".mdf"

       SaveFileDialog1.Filter = "Backup Database (*.mdf)|*.mdf"
       SaveFileDialog1.FileName = MyBackupFileName
       SaveFileDialog1.Title = "إنشاء نسخة احتياطية لقاعدة البيانات"
       SaveFileDialog1.InitialDirectory = Application.StartupPath
       SaveFileDialog1.RestoreDirectory = True

       Dim result = SaveFileDialog1.ShowDialog()
       If result = DialogResult.Cancel Then
           Exit Sub
       End If

       'إغلاق قاعدة البيانات قبل النسخ الاحتياطي
       If Con.State = ConnectionState.Open Then Con.Close()

       My.Computer.FileSystem.CopyFile(Application.StartupPath & "\" & myDataBaseName & ".mdf", SaveFileDialog1.FileName)

       'تشغيل قاعدة البيانات بعد النسخ الاحتياطي
       If Con.State = ConnectionState.Closed Then Con.Open()

       MessageBox.Show("تم نسخ قاعدة البيانات بنجاح", "نسخ قاعدة البيانات", MessageBoxButtons.OK, MessageBoxIcon.Information)



RE: إغلاق قاعدة البيانات قبل نسخها - عبد العزيز البسكري - 22-06-22

من المفروض تعكس العملية 
فتح الإتصال
و بالنهاية إغلاق الإتصال
أو جرب حذف الجملتين تماما و شوف



RE: إغلاق قاعدة البيانات قبل نسخها - أبو خالد الشكري - 22-06-22

للأسف ما شي فايدة 
دائما  تطلع لي هذي الرسالة



RE: إغلاق قاعدة البيانات قبل نسخها - عبد العزيز البسكري - 23-06-22

المساء إن شاء الله سأرسل لك ملفا جاهزا لعملية النسخ الإحتياطي لقاعدة بيانات Sql 



RE: إغلاق قاعدة البيانات قبل نسخها - سعود - 23-06-22

مداخلة بسيطة جدا:
طبعا حسب تجربتي و هي لا بد نفرق بين اخذ ملفي ذي الامتدادين (mdf و ldf) وبين توليد نسخة احتياطية واللتي امتدادها .bak.
شكرا و صباح الخير.6:15 ص 23/6/2022


RE: إغلاق قاعدة البيانات قبل نسخها - أبو خالد الشكري - 23-06-22

(23-06-22, 07:18 AM)سعود كتب : مداخلة بسيطة جدا:
طبعا حسب تجربتي و هي لا بد نفرق بين اخذ ملفي ذي الامتدادين  (mdf  و  ldf)    وبين توليد نسخة احتياطية واللتي امتدادها  .bak.
شكرا و صباح الخير.6:15 ص 23/6/2022


شكرا جزيلا لك أستاذ سعود على مداخلتك اللطيفة

أنا قصدي فقط أخذ نسخة من ملف واحد وهو ذو الامتداد (mdf
بمعنى آخر (وببساطة شديدة) نسخ هذا الملف من دليل البرنامج ووضعه بمسمى جديد في أي مجلد آخر يحدده المستخدم .

الإشكالية التي وقعت فيها ، هي أن عملية النسخ لم تتم لأن البرنامج يظهر رسالة تقول بأن قاعدة البيانات قيد التشغيل
وأنا حاولت بكل ما أستطيع أن أغلق قاعدة البيانات ولم أنجح !
من ضمن الأوامر التي استخدمتها :  con.close

ولكن لم تنجح طريقتي ؛ ولهذا السبب لجأت إلى خبراتكم الطويلة والمتمكنة في مجال قواعد البيانات .

هذا ، وما زلت متشبثا بالأمل أي يوم ما يجيبني أحدكم بحل رائع !

ولك خالص شكري وتقديري .

(23-06-22, 04:27 AM)عبد العزيز البسكري كتب :
المساء إن شاء الله سأرسل لك ملفا جاهزا لعملية النسخ الإحتياطي لقاعدة بيانات Sql 


شكرا جزيلا أستاذ عبد العزيز البسكري
ما تقصر ..  Heart
سأنتظر ردك مساء 

جعله في ميزان حسناتك .


RE: إغلاق قاعدة البيانات قبل نسخها - سعود - 23-06-22

إقتباس :أنا قصدي فقط أخذ نسخة من ملف واحد وهو ذو الامتداد (mdf) 
لا يمكن ... لا بد من من نسخ ملفين mdf and ldf
و لكن بعد غلق الاتصال و عمل detach
انظر للرابط


RE: إغلاق قاعدة البيانات قبل نسخها - أبو خالد الشكري - 23-06-22

(23-06-22, 06:05 PM)سعود كتب :
إقتباس :أنا قصدي فقط أخذ نسخة من ملف واحد وهو ذو الامتداد (mdf) 
لا يمكن ... لا بد من من نسخ ملفين mdf and ldf
و لكن بعد غلق الاتصال و عمل detach
انظر للرابط


أستاذي ملف mdf لا يرتبط نهائيا بالسيرفر
بمعنى آخر ليس موجودًا ضمن قواعد البيانات التي في برنامج SQL Server Management Studio

أساسا أنا بعد أن قمت بتصميم قاعدة البيانات قمت مباشرة بعمل detach وحذفت اسم قاعدة البيانات من برنامج SQL Server Management Studio

وقاعدة البيانات تعمل 100% في مشروعي بدون الارتباط بالسيرفر SQL Server Management Studio

وأنا فقط أريد أعمل نسخ لملف mdf من مشروعي إلى أي فولدر أقوم بتحديده .
أما ملف ldf فلا يهمني مطلقا ؛ لأنه يتكون بروحه أول ما أتصل بقاعدة البيانات .

أرجو أن يكون شرحي واضحا لديكم . وشكرا .