اذهب إلى المحتوى
  • 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

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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.  
 

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

السلام عليكم

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

 

 

backup code.PNG

تم التعديل في بواسطة مؤيد حامد
code is not looking good in this editor
رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...