• 0

كود استراجاع قاعدة البيانات أين الخطأ؟ SQL SERVER

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

هذا الكود لاسترجاع قاعدة البيانات قمت بإنشاء جملة اتصال خاصة به بالإضافة إلى إغلاق جميع جمل الاتصال مع قاعدة البيانات 

الكود لا يعطي أي خطأ ولكن لا يقوم باسترجاع البيانات 

Sub restore_db()
        Dim con As New SqlConnection("Data Source=HP;Database=Master;integrated security=SSPI;")
        con.Open()
        Dim filename As String
        Dim strQuary As String
        Dim objdlg As New OpenFileDialog
        objdlg.FileName = "service_station"
        objdlg.Filter = "SQL Server database backup files|*.bak"
        objdlg.ShowDialog()
        filename = objdlg.FileName
        strQuary = "ALTER DATABASE service_station set SINGLE_USER WITH ROLLBACK IMMEDIATE"
        strQuary = "RESTORE DATABASE service_station FROM disk='" & filename & "' WITH REPLACE,RECOVERY"
        strQuary = "ALTER DATABASE service_station SET MULTI_USER WITH ROLLBACK IMMEDIATE"
        Dim cmd As SqlCommand
        cmd = New SqlCommand(strQuary, con)
        cmd.ExecuteNonQuery()
        con.Close()
    End Sub

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

الخطأ عندك في strQuary

لن يتم تنفيذ إلا آخر أمر  

لأنك فقط قمت بإعادة تعيين المتغير strQuary ثلاث مرات دون تنفيذها. فقط سيتم تنفيذ آخر تعيين تم وهو : 

"ALTER DATABASE service_station SET MULTI_USER WITH ROLLBACK IMMEDIATE"

ليتم حل المشكلة يجب ان يتم تنفيذ كل امر بعد كل عملية تعيين للمتغير. 

فتضيف cmd.ExecuteNonQuery بعد كل امر SQL. ولكن ستحتاج إلى أن تقوم بتعديل عملية تعريف SqlCommand ويتم التعريف مباشرة بعد تعريف الـ SqlConnection وايضاً تحتاج إلى جعل تعريف متغيرات ال string في بداية الدالة (فوق ال SqlConnection) .

كما هو موضح لك بهذه الصورة : sqlcmd.png

 

إذا كنت ستستخدم الـ sqlconnection و sqlcommand بشكل متكرر أنصحك بجعلها دوال functions أو حتى Class حتى تتفادى التكرار وايضاً تختصر الجهد والوقت. 

انظر الى هذا المثال (جعلها كدالة): 

sqlcmd.png

 وحين تطبيقها على دالتك : 

sqlcmd.png

 

لن نحتاج إلى تعريف الاتصال إلا مرة واحدة, والإتصال سيفتح مع بداية دالة SQLCmd ويغلق تلقائياً بعد تنفيذ أمر الإستعلام SQL.  
 

 

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 0

السلام عليكم

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

 

 

backup code.PNG

تمّ تعديل بواسطة مؤيد حامد
code is not looking good in this editor

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن