اذهب إلى المحتوى

السؤال

نشر

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

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

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

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

 

Recommended Posts

  • 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.  
 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...