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

كود عمل backup و restore يعمل مع SQLSERVER 2008 R2

بدأه محمد أحمد إبراهيم في 22 أغسطس 2012 · 2 رد · 1,943 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

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

كنت أعمل على 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

#2

قم بإزالة مكتبات sql smo لأنها قديمة (2005) وضع المكتبات الجديدة (2008) وكذلك Common

وذلك كالتالي

من Solution Explorer اضغط على زر Show All Files

ثم References ومنها احذف المكتبتان

ثم ضفهما ثانية

وهذا موضوع قد يفيدك

/index.php?showtopic=201957

#3

أخى العزيز asn

قمت بعمل ما قلته له ولكن دون جدوى مازالت نفس المشكلة قائمة ..

هل من الممكن أن تكون المشكلة فى نسخة sql server

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