الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشكلة فى النسخ الاحتياطي

بدأه ريمات العالم في 24 يونيو 2010 · 5 رد · 832 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

لدى مشكلة وهى فى عملية النسخ الاحتياطي لقاعدة البيانات sql server2005 من خلال الكود البرمجى باستخدام فيجوال بيسك 6 عملية التخزين لمرة واحدة وتظهر لى مشكلة كما بالصورة التالية المرفقة أن الكود البرمجى مقتبس من أحد المواضيع فى المنتدي كما يلي :

Private Sub backup_Click()
Dim a As String
If cn.State = 1 Then cn.Close

Dim s As New Scripting.FileSystemObject
If s.FileExists("virus_Bup") = False Then
  If MsgBox("another backup was found" & vbCrLf & " do you want to replace it ?", vbOKCancel + vbCritical, "attention!") = vbOK Then

   MsgBox Dir(App.Path & "\virus_Bup")
   If Dir(App.Path & "\virus_Bup") = "" Then
    Kill ("G:\attach&dettachsqldb\virus.pac")
    MsgBox "deleted"

cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=virus"
    MsgBox "connected succsessfuly"
    cn.Execute " exec sp_addumpdevice 'disk','virus_Bup','" & App.Path & "\virus.pac'"
    cn.Execute "backup database virus to virus_Bup"
    MsgBox "Done Backup "
 Else
 MsgBox " no new backup "
 Exit Sub
  End If
  End If
End If
End Sub

والخطأ فى السطر التالي :

cn.Execute " exec sp_addumpdevice 'disk','virus_Bup','" & App.Path & "\virus.pac'"

مع العلم ان النسخ فى المرة الأولى تمام ولكن مرة اخرى لاتتم العملية

post-174596-053764500 1277375039_thumb.j

المرفقات
2.jpg
#2

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

معقولة مافيش حد عرف الخطأ وين المبرمجين أو أن الموضوع ليس بتلك الاهمية

#3

السلام عليكم

عند الحذف تقوم بحذف الملف الموجود على القرص الصلب لكن هناك ايضا القرص موجود في SQL server أي مايسمى Logical device . فانت تقوم باضافته مة اخرى مع انه موجود .

لذا اقترح عليك الكود التالي بعد التعديل على الكود اعلاه

Private Sub backup_Click()

    Dim a As String
On Error GoTo herr

    If cn.State = 1 Then cn.Close


    cn.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=virus"

    Dim RecAffected As Long

    cn.Execute "SELECT name FROM master.dbo.sysdevices WHERE name = N'virus_Bup'", RecAffected

    If RecAffected = 0 Then

        cn.Execute " exec sp_addumpdevice 'disk','virus_Bup','" & App.Path & "\virus.pac'"

    ElseIf MsgBox("another backup was found" & vbCrLf & " do you want to replace it ?", vbYesNo + vbCritical, "attention!") = vbNo Then

            MsgBox " no new backup ", vbInformation
            Exit Sub



    End If

    cn.Execute "backup database virus to virus_Bup WITH INIT"
                MsgBox "Done Backup ", vbInformation
 Exit Sub
herr:
MsgBox Err.Description, vbCritical

End Sub
#4

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

لعمل نسخة احتياطية لقاعدة البيانات يجب أولاً أن نتصل بها ثم أخذ نسخة أحتياطية لها ثم نغلق الاتصال ويبقى علينا قبل عمل النسخة التأكد من وجود السابقة ان وجدت نقوم بحذفها وإذا لم توجد نقوم بعمل النسخة

فإليك الكود التالي

If cn.state = 1 then cn.close

'''''''''''''''''''''''''''''''''''''''''''''''

ضع هنا كود الاتصال بقاعدة البيانات المستخدم لديك مسبقاً

'''''''''''''''''''''''''''''''''''''''''''''''

للتأكد من وجود نسخة سابقة ((أن وجدت سيتم حذفها))

If Dir("D:\virus.bak", vbdirectory) <> "" then Kill ("D:\virus.bak")

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

cn.Execute "backup database virus to disk = 'D:\virus.bak'"

If cn.state = 1 then cn.close

Msgbox "Done backup"

مجرب فترات طويله ويعمل بنجاح ومن الأفضل النسخة تكون على قرص آخر غير القرص الموجود عليه ويندوز وهنا انا عملته على القرص D

ملاحظه // سبب التعديل كنت اكتب المشاركة أثناء الأستاذ طارق يكتب أيضاً ولو كنت أعرف لما كتبت شكري وتقديري للأستاذ طارق

تحياتي للجميع

تم تعديل هذه المشاركة بواسطة محمدvb في 27 يونيو 2010 في 13:01

#5

بارك الله فيكما ياأستاذ طارق أستاذ محمد على هذا المجهود الطيب والأمور أن شاء الله تمام

#6

اخ محمد طريقتك تعتمد على عمل (ملف) للنسخ الاحتياطي ام الطريقة التي ذكرها الاخ ريمات العالم فهي تعتمد على Backup devices وهي سبب المشكلة .

وفي الطريقتين يمكن الاستغناء عن حذف الملفات عن طريق وضع with init

cn.Execute "backup database virus to disk = 'D:\virus.bak' WITH NOFORMAT, INIT"

مواضيع مشابهة