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

اريد عملية حفظ وأسرجاع نسخة للقاعدة sql

بدأه مالكـ في 28 نوفمبر 2013 · 9 رد · 1,248 مشاهدة · في Microsoft Visual Basic.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع
السلام عليكم ورحمة الله وبركاتة

اريد عملية حفظ وأسرجاع للقاعدة sql ..... من خلال الادوات SaveFileDialog
و OpenFileDialog

علمآ بان قاعدة البيانات .... مربوطة عن طريق المعالج



لدي كود حفظ وأسترجاع .... لكن يعمل على قواعد اكسس فقط

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#2

للرفع

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#3

للحفظ

Dim sqlConn As New SqlConnection("Data Source=(local);Initial Catalog=master;User ID=sa;Trusted_Connection=true")

sqlConn.Open()

Dim sCommand = "BACKUP DATABASE [YourDatabaseName] TO DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\Backup.bak' WITH COPY_ONLY"

Using sqlCmd As New SqlCommand(sCommand, sqlConn)

sqlCmd.ExecuteNonQuery()

End Using

الاسترجاع

sCommand = "RESTORE DATABASE [YourDatabaseName] FROM DISK = N'C:\Program Files\Microsoft SQL Server\MSSQL10_50.MSSQLSERVER\MSSQL\Backup\TestBackup.bak' WITH REPLACE"

Using sqlCmd As New SqlCommand(sCommand, sqlConn)

sqlCmd.ExecuteNonQuery()

End Using

VB.NET and C# Comparison

http://www.harding.edu/fmccown/vbnet_csharp_comparison.html

002.gif

=-=-=-=-=-=-=
ذو العلم يشقى فى النعيم بعلمه .:. واخو الجهالة فى الشقاوة ينعم
=-=-=-=-=-=-=
يا من بدنياه اشتغل . قد غره طول الأمل . فالموت يأتى بغتة . والقبر صندوق العمل
=-=-=-=-=-=-=
ان لم تستطع ان تجد ما تفعله فافعل ما لم تسطع ان تجده

screen_shot_2011-05-19_at_12.44.49_pm.pn

#4

اخي ... لم يضبط معي الكود

 

 

 

رفعت المثال .. للاطلاع

نسخة احتياطية.rar

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#5

للـــــرفع

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#6
Public Shared Function RestoreDB(ByVal path As String, Optional ByVal dbname 
As String = "test") As Boolean
Dim SqlConnection1 = New SqlConnection("Data Source=.\SQLEXPRESS;Initial 
Catalog=master;Integrated Security=SSPI;")
Using CMD = New SqlCommand() With {.CommandType = CommandType.Text, 
.Connection = SqlConnection1}
If SqlConnection1.State = ConnectionState.Open Then 
SqlConnection1.Close()
SqlConnection1.Open()
Try
If cnn.State = ConnectionState.Open Then
cnn.Close()
End If
If GETATTACHDATABASENAME("dbname", ".\sqlexpress", "uname","pass", 
"security") Then 
If MsgBox(" عفوا قاعدة البيانات موجودة هل تريد استبدالها ", msgdialog) = 
MsgBoxResult.Yes Then
MsgBox("يرجى إغلاق جميع الاتصال بالقاعدة حتى يتم الاستبدال ؟ عند الانتاء يرجى 
الضغط على موافق", MsgBoxStyle.ApplicationModal)
CMD.CommandText = String.Format("ALTER DATABASE {0} SET SINGLE_USER WITH 
ROLLBACK IMMEDIATE", dbname)
CMD.ExecuteNonQuery()
CMD.CommandText = String.Format("restore database {0} from disk =@PATHFILE 
WITH FILE = 1, NOUNLOAD, REPLACE ", dbname)
End If
End If
CMD.CommandText = String.Format("restore database {0} from disk =@PATHFILE", 
dbname)
CMD.Parameters.Add("@PATHFILE", SqlDbType.NVarChar, 500).Value = path
CMD.ExecuteNonQuery()
CMD.CommandText = String.Format("ALTER DATABASE {0} SET MULTI_USER", 
dbname)
CMD.ExecuteNonQuery()
SqlConnection1.Dispose()
MsgBox("تم استعادة النسخة الاحتياطية ")
Return True
Catch ex As Exception
MessageBox.Show(" فشل البرنامج فى استرجاع البيانات من النسخه الاحتياطية" 
& ex.Message, "استرجاع البيانات", MessageBoxButtons.OK, 
MessageBoxIcon.Information, MessageBoxDefaultButton.Button2, 
MessageBoxOptions.RtlReading)
End Try
End Using
SqlConnection1.Dispose()
Return False
End Function
Public Shared Sub BackupDb(ByVal path As String)
Dim xx As String = path.Substring(0, 1)
If String.Compare(xx, "C", False) = 0 Then
MsgBox("لا يمكن حفظ النسخه الاحتياطيه في قرص النظام .. الرجاء اختيار قرص 
اخر", MsgBoxStyle.Information, "تنبيه")
Exit Sub
Else
Try
Dim SqlConnection1 = New SqlConnection("Data 
Source=LocalHost\SQLEXPRESS;Initial Catalog=master;Integrated 
Security=SSPI;")
Using CMD = New SqlCommand() With {.CommandType = CommandType.Text, 
.Connection = SqlConnection1}
If SqlConnection1.State = ConnectionState.Open Then 
SqlConnection1.Close()
SqlConnection1.Open()
CMD.CommandText = String.Format("backup database {0} to disk=@PATHFILE with 
init", DBNAME)
CMD.Parameters.Add("@PATHFILE", SqlDbType.NVarChar, 500).Value = path
CMD.ExecuteNonQuery()
End Using
SqlConnection1.Dispose()
MessageBox.Show(String.Format("تم انشاء نسخه احتياطية من قاعدة البيانات 
الحالية فى المسار التالى {0}{0}{1}", vbCrLf, path.Trim), "انشاء نسخه احتياطيه", 
MessageBoxButtons.OK, MessageBoxIcon.Information, 
MessageBoxDefaultButton.Button2, MessageBoxOptions.DefaultDesktopOnly)
SqlConnection1.Dispose()
Catch ex As Exception
ErrorLog.WriteToLog(ex.Message)
End Try
End If
End Sub
Public Shared Function GETATTACHDATABASENAME(ByVal db As String, ByVal serv 
As String, ByVal u As String, ByVal p As String, ByVal type As integer) As 
Boolean
Try
Dim strtype As String
Using DS As New DataSet()
strtype = If(type = 0, "Integrated Security=SSPI;Persist Security 
Info=False", String.Format("Persist Security Info=true;User ID={0};Pwd={1}", u, 
p))
Dim SqlConnection1 = New SqlConnection(String.Format("server={0};Initial 
catalog=tempdb;{1}", serv, strtype))
Const str As String = "Select DISTINCT name from master.dbo.sysdatabases 
where name Like @db and has_dbaccess(Name) = 1 "
Dim ADP = New SqlDataAdapter(str, SqlConnection1)
ADP.SelectCommand.Parameters.Add("@db", SqlDbType.NVarChar).Value = db
DS.Clear()
ADP.Fill(DS)
Return If(DS.Tables(0).Rows.Count = 0, False, True)
ADP.Dispose()
SqlConnection1.Dispose()
End Using
Catch ex As Exception
MsgBox(String.Format("عفوا لايمكن التحقق من وجود القاعدة في الوقت الحالي 
{0}{1}", Environment.NewLine, ex.Message))
Return False
End Try
End Function

هذا هو الكود كامل وهو شغال معي وبالنسبة لكود الاستعادة ينفع حتى لو كانت قاعدة البيانات موجودة وبالنسبة للاتصال بقاعدة البيانات عند عملية النسخ أو الاستعادة يجب أن يكون الجهاز الحالي السيرفر أو مرخص له وعملية فحص قاعدة البيانات يجب تحديد نوعية الاتصال هل هو عن طريق حساب ويندوز أم عن طريق حساب السيرفر

 

فإن كان حساب السيرفر نضع في مكان الكلمة security في الدالة  GETATTACHDATABASENAME  رقم صفر (0) أم إن كان نوع الاتصال ليس عن طريق حساب الويندوز فيمكنك  وضع الرقم واحد(1)

 

وإن أردت أي مساعدة فأنا موجود

تم تعديل هذه المشاركة بواسطة أبوعزام في 3 ديسمبر 2013 في 14:42

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#7

يعطيك العافية
 

 

اخي لو تكرمت شاهد مثالي في الاعلى

 

بالنشبة للاكواد .... لم تتناسق في محرر الفيجوال

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#8

أخي الحبيب على ماأظن أن الكود لايعمل مع برنامجك لأن قاعدة البيانات الخاصة بكم محلية وليست على الشبكة هذا لأن الكود يقوم بالاتصال بالقاعدة المركزية بالسيرفر حتى يقوم بعمل نسخة من القاعدة  فإن كنت تريد عمل نسخة من القاعدة فيفضل أن تكون بنسخ الملفات بالكامل مثل قاعدة بيانات أكسس وهذا يكون عن طريق امر file.copy

تم تعديل هذه المشاركة بواسطة أبوعزام في 9 ديسمبر 2013 في 20:21

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

#9

نعم ايو عزام .... القاعدة محلية

 

ماريدة .... هو قطع الاتصال بالقاعدة ..... حتى استطيع نسخ القاعدة الي اي مساار

 

مع الشكر

اذا المشاركة قد نالت على أعجابك .... فارجوا التقييم  rep_up.png

#10

أخي الحبيب مادام أن القاعدة محلية فلايحتاج إلى إجراء قطع الاتصال لأن الكائن DataAdapter يقوم بقطع الاتصال تلقائيا بعد تعبئة البيانات أو تحديثها

أنا الرجل الضرب الذي تعرفونه***خشاش كرأس الحية المتوقد

لوكنت وغلاً في الرجال لضرني**** حسن جرائتي ومقتدي

منتديات طريق الهداية

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…