السلام عليكم
ارجو مساعدتي في برنامج النسخ الاحتياطي
البرنامج يشتغل 100 في 100 على الجهاز الرئيسي (السيرفر)
لكن لا يشتغل على الشبكة في اجهزة الكلانت
يقوم بجلب اسم الجهاز الخاص بالكلانت.
.
المشروع مرفق
ارجو المساعدة
مبدأيا لدي ملاحظة تتعلق بجملة الاستعلام التي استخدمتها لاستعادة النسخة الاحتياطية
انت استخدمت الجملة التالية
كود :
("RESTORE DATABASE " & cmbdatabase.Text & " FROM disk='" & OpenFileDialog1.FileName & "'")
هذه الجملة تستعيد نسخة احتياطية لقاعدة بيانات موجودة اما اذا كانت غير موجودة فسيتم انشاءها
وفي حال كانت قاعدة البيانات موجودة فستم الاستعادة بنجاح شرط ان لا تكون قاعدة البيانات قيد الاستخدام اما اذا كانت قيد الاستخدام فستفشل الاستعادة ويظهر خطأ طبعا انت ستقول لي ان قاعدة البيانات ليست قيد الاستخدام انا ارد عليك انه في كثير من الاحيان نغلق جميع الاتصالات بقاعدة البيانات ولكن تبقى قيد الاستخدام وهذا يفسر ان الكود الاول الذي استخدمته انت ينجح احيانا واحيانا لا وعند الاستخدام الطويل لبرنامجك سيظهر لك انه حتى من المخدم الرئيسي ستظهر مشاكل
ولكن هناك جملة استخدام اخرى لحل هذه المشكلة على الشكل الاتي
كود :
"ALTER DATABASE " & DATABASEE & " SET OFFLINE WITH ROLLBACK IMMEDIATE; RESTORE DATABASE " & DATABASEE & " From Disk ='" + OpenFileDialog1.FileName + "' ALTER DATABASE " & DATABASEE & " SET ONLINE WITH ROLLBACK IMMEDIATE"
المتغير databasee يحمل اسم قاعدة البيانات
في هذا الامر يقم بتحويل قاعدة البيانات الى الوضع offline ثم يجري عملية الاستعادة ثم يرجع قاعدة البيانات الى الوضع online ولكن هذا اذا كانت قاعدة البيانات موجودة اما اذا كانت غير موجودة مثل انه تم حذفها بالخطأ فعندئد لن تتم الاستعادة وستظهر رسالة الخطأ
------
ومن خلال بحثيي وتجربتي وجدت انه اغلب الشروحات على مواقع النت على اليوتيوب عند شرح الاستعادة يستخدمون جملة واحدة
وانا برأيي لا بد من استخدمام الكودين ضمن جملة شرطية
اولا نستعلم عن جميع قواعد البيانات ثم في حال كانت قاعدة البينات موجودة يتم استخدام الاستعلام الثاني الذي ذكرته لك اما اذا كانت قاعدة البيانات غير موجودة فعندئذ نستخدم الاستعلام الثاني الذي ذكرته لك
******
ارجو ان تكون الفكرة وصلت
شكرا اخى
انا حاليا لا اُريد استرجاع النسخ الاحتياطي
المطلوب فقط النسخ الاحتياطي
المشكلة التي توجهني هيا عدم عمل البرنامج عندما يكون على جهاز بالشبكة
عندم يكون على الجهاز الموجود به السيرفر يشتغل البرنامج 100%
هذا الكود
Private cmd As New SqlCommand
Dim red As SqlDataReader
Dim op As New OpenFileDialog
Dim opf As New FolderBrowserDialog
Private Sub ButtonX1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ButtonX1.Click
Try
If txt1char.Text = "C" Then
MessageBox.Show("حاول مجدداً C:\ لا يمكن حفظ النسخة الاحتياطية على الجذر ", "", MessageBoxButtons.OK, MessageBoxIcon.Information)
Exit Sub
End If
Dim DATABASEE As String = My.Settings.DataBase
Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;Initial Catalog=" & DATABASEE & ";Integrated Security=True")
'Dim datab As String
'datab = "DB_ACC"
'datab = My.Settings.DataBase
If txt_path.Text = "" Then
MessageBox.Show(" يجب اختيار المسار اولا", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
Return
End If
Dim Filename As String = txt_path.Text + "\ " + DATABASEE + " " + DateTime.Now.ToShortDateString().Replace("/", "-") + " - " + DateTime.Now.ToLongTimeString().Replace(":", "-") & ".bak"
If con.State = ConnectionState.Open Then
con.Close()
End If
con.Open()
Dim querey As String = "backup database " & DATABASEE & " to disk='" & Filename & "'with init,stats=10"
cmd = New SqlCommand(querey, con)
cmd.ExecuteNonQuery()
con.Close()
MessageBox.Show(" تمت عملية النسخ بنجاح", "تاكيد", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
MessageBox.Show(ex.ToString, "تنبيه")
End Try
End Sub
ممكن تقوم التعديل على المشروع المرفق في فورم جديد Formnew