مسار استرجاع قاعدة البيانات خطاء عند العميل - محمد العامر - 21-10-24
اسعد الله جميع اوقاتكم بكل خير
عندي الكود التالي استرجاع نسخة sql وتعمل بشكل صحيح عندي ولكن عند العميل خطاء
والسبب بأن مسار استرجاع النسخة مختلف عند العميل ما هو الحل لو تكرمتوا
كود :
If String.IsNullOrEmpty(Textrecovery.Text) Then Exit Sub
If Not Textrecovery.Text.Contains("Data1.bak") Then
DevExpress.XtraEditors.XtraMessageBox.Show("قاعدة البيانات التي تم اختيارها لا تتوافق مع المطلوب", "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Exit Sub
End If
Try
Dim con As New SqlConnection("server=.\SQLEXPRESS;Initial Catalog=master;integrated security=true")
con.Open()
Dim cmd As New SqlCommand("ALTER DATABASE Data1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE", con)
cmd.ExecuteNonQuery()
cmd = New SqlCommand("RESTORE DATABASE [Data1] FROM DISK = @filePath WITH MOVE 'Data1' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Data1.mdf', MOVE 'Data1_log' TO 'C:\Program Files (x86)\Microsoft SQL Server\MSSQL12.SQLEXPRESS\MSSQL\DATA\Data1.ldf', REPLACE, RECOVERY", con)
cmd.Parameters.AddWithValue("@filePath", Textrecovery.Text)
cmd.ExecuteNonQuery()
cmd = New SqlCommand("ALTER DATABASE Data1 SET MULTI_USER WITH ROLLBACK IMMEDIATE", con)
cmd.ExecuteNonQuery()
con.Close()
DevExpress.XtraEditors.XtraMessageBox.Show("تمت عملية استرجاع النسخة الاحتياطية لقاعدة البيانات بنجاح", "تنبية", MessageBoxButtons.OK, MessageBoxIcon.Information)
Textrecovery.Text = String.Empty
Catch ex As Exception
DevExpress.XtraEditors.XtraMessageBox.Show("فشل في عملية الاسترجاع: " & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
End Try
RE: مسار استرجاع قاعدة البيانات خطاء عند العميل - محمد العامر - 21-10-24
هل اجد شرح لهذه الطريقة ؟
RE: مسار استرجاع قاعدة البيانات خطاء عند العميل - محمد العامر - 12-11-24
هذا الحل يا اخوان
كود :
Private Sub Btnrecovery_Click(sender As Object, e As EventArgs) Handles Btnrecovery.Click
Dim database As String = con.Database.ToString()
If String.IsNullOrEmpty(Textrecovery.Text) Then
DevExpress.XtraEditors.XtraMessageBox.Show("الرجاء اختيار ملف النسخة الاحتياطية", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Warning)
Exit Sub
End If
Try
con.Open()
' ضبط قاعدة البيانات إلى وضع المستخدم الواحد
Dim str1 As String = String.Format("ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE", database)
Dim cmd1 As New SqlCommand(str1, con)
cmd1.ExecuteNonQuery()
' استعادة قاعدة البيانات
Dim str2 As String = String.Format("USE MASTER; RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE", database, Textrecovery.Text)
Dim cmd2 As New SqlCommand(str2, con)
cmd2.ExecuteNonQuery()
' إعادة قاعدة البيانات إلى وضع متعدد المستخدمين
Dim str3 As String = String.Format("ALTER DATABASE [{0}] SET MULTI_USER", database)
Dim cmd3 As New SqlCommand(str3, con)
cmd3.ExecuteNonQuery()
DevExpress.XtraEditors.XtraMessageBox.Show("تم استرجاع النسخة الاحتياطية لقاعدة البيانات بنجاح", "تنبيه", MessageBoxButtons.OK, MessageBoxIcon.Information)
Catch ex As Exception
DevExpress.XtraEditors.XtraMessageBox.Show("حدث خطأ أثناء استعادة النسخة الاحتياطية لقاعدة البيانات: " & ex.Message, "خطأ", MessageBoxButtons.OK, MessageBoxIcon.Error)
Finally
' التأكد من إغلاق الاتصال دائمًا
If con.State = ConnectionState.Open Then
con.Close()
End If
End Try
End Sub
|