منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : النسخة الاحتياطية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
هل فيه كود للنسخ الاحتياطي لقاعدة من نوع sql local database
(19-04-25, 10:09 PM)محمد بن عطية كتب : [ -> ]هل فيه كود للنسخ الاحتياطي لقاعدة من نوع sql local database

نعم يوجد عندي مثال لما طلبت أرجع للبيت إن شاء الله وأرفقه لك
نعم، يمكن عمل نسخة احتياطية (Backup) من قاعدة بيانات SQL LocalDB ، خاصة إذا كنت تستخدم ملف قاعدة بيانات (مثل .mdf) مرتبط بـ LocalDB.

إليك كودًا بسيطًا يقوم بنسخ ملف قاعدة البيانات والملف المصاحب له (.ldf) إلى مجلد النسخ الاحتياطي. يفترض أن قاعدة البيانات غير متصلة (Detached) أو أنه يمكنك فصل الاتصال مؤقتًا:

PHP كود :
Imports System.IO

Public Class BackupHelper
    Public Shared Sub BackupLocalDB
(ByVal dbName As StringByVal backupDirectory As String)
 
       Dim dataDir As String AppDomain.CurrentDomain.GetData("DataDirectory").ToString()
 
       Dim mdfFile As String Path.Combine(dataDirdbName ".mdf")
 
       Dim ldfFile As String Path.Combine(dataDirdbName "_log.ldf")

 
       Dim backupMdf As String Path.Combine(backupDirectorydbName "_backup.mdf")
 
       Dim backupLdf As String Path.Combine(backupDirectorydbName "_backup_log.ldf")

 
       Try
            
' إنشاء مجلد النسخ الاحتياطي إن لم يكن موجوداً
            Directory.CreateDirectory(backupDirectory)

            ' 
نسخ الملفات
            File
.Copy(mdfFilebackupMdfTrue)
 
           File.Copy(ldfFilebackupLdfTrue)

 
           MessageBox.Show("تم إنشاء النسخة الاحتياطية بنجاح""نسخ احتياطي"MessageBoxButtons.OKMessageBoxIcon.InformationMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading)
 
       Catch ex As Exception
            MessageBox
.Show("حدث خطأ أثناء النسخ الاحتياطي: " ex.Message"خطأ"MessageBoxButtons.OKMessageBoxIcon.ErrorMessageBoxDefaultButton.Button1MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading)
 
       End Try
 
   End Sub
End 
Class 


طريقة الاستخدام من النموذج (Form)

PHP كود :
' مثال: عند الضغط على زر النسخ الاحتياطي
Private Sub BtnBackup_Click(sender As Object, e As EventArgs) Handles BtnBackup.Click
    Dim databaseName As String = "MyDatabase" ' 
اسم القاعدة بدون الامتداد
    Dim backupPath 
As String "C:\BackupFolder"

 
   BackupHelper.BackupLocalDB(databaseNamebackupPath)
End Sub 


كود الاستعادة من النسخة الاحتياطية (Restore)



PHP كود :
Imports System.IO

Public Class RestoreHelper
    Public Shared Sub RestoreLocalDB
(ByVal dbName As StringByVal backupDirectory As String)
 
       Dim dataDir As String AppDomain.CurrentDomain.GetData("DataDirectory").ToString()
 
       Dim mdfFile As String Path.Combine(dataDirdbName ".mdf")
 
       Dim ldfFile As String Path.Combine(dataDirdbName "_log.ldf")

 
       Dim backupMdf As String Path.Combine(backupDirectorydbName "_backup.mdf")
 
       Dim backupLdf As String Path.Combine(backupDirectorydbName "_backup_log.ldf")

 
       Try
            
' تأكد أن النسخة الاحتياطية موجودة
            If Not File.Exists(backupMdf) OrElse Not File.Exists(backupLdf) Then
                MessageBox.Show("النسخة الاحتياطية غير موجودة!", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error,
                                MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading)
                Return
            End If

            ' 
حذف الملفات الأصلية إن وُجدت
            If File
.Exists(mdfFileThen File.Delete(mdfFile)
 
           If File.Exists(ldfFileThen File.Delete(ldfFile)

 
           ' نسخ النسخة الاحتياطية مكان الأصلية
            File.Copy(backupMdf, mdfFile)
            File.Copy(backupLdf, ldfFile)

            MessageBox.Show("تمت استعادة النسخة الاحتياطية بنجاح.", "استعادة", MessageBoxButtons.OK, MessageBoxIcon.Information,
                            MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading)
        Catch ex As Exception
            MessageBox.Show("حدث خطأ أثناء الاستعادة: " & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error,
                            MessageBoxDefaultButton.Button1, MessageBoxOptions.RightAlign Or MessageBoxOptions.RtlReading)
        End Try
    End Sub
End Class 


الاستخدام من الفورم (مثال عند الضغط على زر)

PHP كود :
Private Sub BtnRestore_Click(sender As ObjectAs EventArgsHandles BtnRestore.Click
    Dim dbName 
As String "MyDatabase"
 
   Dim backupPath As String "C:\BackupFolder"

 
   RestoreHelper.RestoreLocalDB(dbNamebackupPath)
End Sub 

ملاحظات مهمة جدًا:
تأكد من غلق أي اتصال مع قاعدة البيانات قبل تنفيذ الاستعادة.
يمكنك مثلاً استخدام SqlConnection.Close() أو حتى إعادة تشغيل البرنامج بعد الاستعادة.
هذه الطريقة تعمل مع ملفات mdf المرتبطة بتطبيقك باستخدام |DataDirectory|.
يمكن أيضًا تعديل الكود لتحديث الاتصال أو إعادة التحميل بعد الاستعادة إذا رغبت.

بالتوفيق.