12-11-24, 11:24 AM
هذا الحل يا اخوان
كود :
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لا إله إلا الله وحده لا شريك له، لهُ الملك وله الحمد وهو على كل شئ قدير،،،،
سبحان الله وبحمده سبحان الله العظيم 

