السلام عليكم و رحمة الله و بركاته ..
كنت أعمل على vb.net 2008 مع قاعدة بيانات sqlserver 2005 كنت أستخدم كود vb.net لعمل backup و restore لقاعدة البيانات وكان يعمل جيدا ولكن عندى التغيير إلى sqlserver 2008 r2 لم يعمل الكود ويظهر هذه الرسالة
backup failed for server 'mohamed-pc
'
اتمنى من حضراتكم تصحيح أى خطأ فى الكود أو غعطائى كود يعمل مع sqlserver 2008 r2 نظرا لإحتياجى الشديد له
****************************************** الكود ************************************************
Imports System.Data
Imports System.Data.SqlClient
Imports Microsoft.SqlServer.Management.Common
Imports Microsoft.SqlServer.Management.Smo
Private Const srvrConnectionString As String = "Data Source=MOHAMED-PC;Persist Security Info=True;User ID=sa;Password=1900818;Connect Timeout=30"
أولا كود backup
Public Sub Make_Backup()
Dim bError As Boolean
Dim dlgSaveFile As New SaveFileDialog()
bError = False
dlgSaveFile.Filter = "SQL Server database backup files|*.bak"
dlgSaveFile.FileName = "paintsDB_backup"
'********************************** حالة إلغاء إستعادة النسخة *********************************
select Case dlgSaveFile.ShowDialog(MDI)
Case Windows.Forms.DialogResult.Cancel
Exit Sub
Case Windows.Forms.DialogResult.OK
MDI.update()
'////////////////////////////////////////////////////////////////////////////////////////////////////////
FrmLoading.LblMsg.Text = "...... جارى إنشاء النسخة الإحتياطية لقاعدة البيانات"
FrmLoading.ShowDialog()
'/////////////////////////////////////////////////////////////////////////////////////////////////////////
'Null إنشاء كائن الإتصال
Dim sqlConnection As New SqlClient.SqlConnection(srvrConnectionString)
Dim srvrConnection As New ServerConnection(sqlConnection)
'Null ربط الإتصال بالملقم
Dim srvr As New Server(srvrConnection)
'Null إنشاء الكائن الذي سنستعمله لإنشاء النسخة الإحتياطية
Dim bkp As New Backup()
'Null تحديد العملية في إنشاء نسخة احتياطية لكامل قاعدة البيانات
bkp.Action = BackupActionType.Database
'Null تحديد اسم قاعدة البيانات
bkp.Database = "paints"
'Null تعليق على النسخة الإحتياطية
bkp.BackupSetDescription = "Database " + "paints" + " backup " + DateTime.Today.ToShortDateString()
'Null إسم النسخة الإحتياطية
bkp.BackupSetName = "paints" + "_backup"
'Null إنشاء نسخة كاملة لقاعدة البيانات وليس فقط للبيانات التي تم تغييرها
bkp.Incremental = False
'Null حساب مجموع البيانات للتأكد من صحة النسخة الإحتياطية
bkp.Checksum = True
'Null اقتطاع سجل قاعدة البيانات بعد إنشاء النسخة الإحتياطية
bkp.LogTruncation = BackupTruncateLogType.Truncate
'Null تحديد نوع الجهاز الذي سيتم عليه إنشاء النسخة الإحتياطية في ملف
Dim bdi As New BackupDeviceItem(dlgSaveFile.FileName, DeviceType.File)
bkp.Devices.Add(bdi)
Try
'Null بدأ عملية إنشاء النسخة الإحتياطية لقاعدة البيانات
bkp.SqlBackup(srvr)
Catch ex As Exception
'MessageBox.Show("فشلت عملية إنشاء النسخة الإحتياطية لقاعدة البيانات", " --", MessageBoxButtons.OK, MessageBoxIcon.Error)
'MsgBox(ex.InnerException.ToString)
MsgBox(ex.Message)
bError = True
End Try
If Not bError Then MessageBox.Show("تمت عملية إنشاء النسخة الإحتياطية بنجاح", "--", MessageBoxButtons.OK, MessageBoxIcon.Information)
End select
End Sub
ثانيا كود restore
Public Sub Restore_Backup()
Dim bError As Boolean
Dim dlgOpenFile As New OpenFileDialog()
bError = False
dlgOpenFile.Filter = "SQL Server database backup files|*.bak"
'********************************** حالة إلغاء إستعادة النسخة *********************************
select Case dlgOpenFile.ShowDialog(MDI)
Case Windows.Forms.DialogResult.Cancel
Exit Sub
Case Windows.Forms.DialogResult.OK
MDI.update()
'////////////////////////////////////////////////////////////////////////////////////////////////////////
FrmLoading.LblMsg.Text = "...... جارى إستعادة قاعدة البيانات من النسخة الإحتياطية"
FrmLoading.ShowDialog()
'/////////////////////////////////////////////////////////////////////////////////////////////////////////
'Null إنشاء كائن الإتصال
Dim sqlConnection As New SqlClient.SqlConnection(srvrConnectionString)
Dim srvrConnection As New ServerConnection(sqlConnection)
'Null ربط الإتصال بالملقم
Dim srvr As New Server(srvrConnection)
'Null إنشاء الكائن الذي سنستعمله لاستعادة قاعدة البيانات من النسخة الإقتصادية
Dim rstr As New Restore()
'Null استبدال قاعدة البيانات بأكملها
rstr.Action = RestoreActionType.Database
'Null التأكد من صحة البيانات من خلال التأكد من حساب مجموع البيانات
rstr.Checksum = True
'Null استكمال العملية حتى بعد حصول أخطاء في عملية الإستعادة
rstr.ContinueAfterError = True
'Null اسم قاعدة البيانات التي سيتم استبدالها
rstr.Database = "paints"
'Null تحديد الجهاز الذي تتواجد به النسخة الإحتياطية
rstr.Devices.Add(New BackupDeviceItem(dlgOpenFile.FileName, DeviceType.File))
'Null قاعدة البيانات الحالية سيتم استبدالها بتلك الموجودة على النسخة الإحتياطية
rstr.ReplaceDatabase = True
'Null تأكيد استبدال قاعدة البيانات بأكملها و ليس جزء منها فقط
rstr.Partial = False
Try
'Null عملية التأكد من النسخة الإحتياطية قبل بدإ عملية الإستبدال
If rstr.SqlVerify(srvr) Then
'Null إيقاف كل ماهو مرتبط بقاعدة البيانات
srvr.KillAllProcesses("paints")
'Null عزل قاعدة البيانات عن الملقم
srvr.DetachDatabase("paints", True)
'Null بدأ عملية استعادة قاعدة البيانات
rstr.SqlRestore(srvr)
End If
Catch ex As Exception
MessageBox.Show("فشلت عملية استعادة قاعدة البيانات من النسخة الإحتياطية", "----", MessageBoxButtons.OK, MessageBoxIcon.Error)
bError = True
End Try
If Not bError Then MessageBox.Show("تمت عملية استعادة قاعدة البيانات من النسخة الإحتياطية بنجاح", "---", MessageBoxButtons.OK, MessageBoxIcon.Information)
End select
End Sub