PDA

View Full Version : درست کردن این نمونه برنامه بکاپ و ریستور در اس کیو ال اکسپرس



nedaei
یک شنبه 23 آبان 1395, 12:52 عصر
با سلام خدمت دوستان من میخام از اس کیو ال اکسپرس بکاب بگیرم و برگردونم ولی کار نمی کنه این هم نمونه برنامه لطفا اشکالات این نمونه را برطرف نمایید و کمکم کنید ممنون
http://nedaei1356.persiangig.com/other/bak%20reset.rar

mahdi.m.sh
سه شنبه 25 آبان 1395, 19:09 عصر
این کد گرفتن پشتیبان :





Dim save1 As New SaveFileDialog
save1.Filter = "SQL Backup Files (*.BAK)|*.BAK"
save1.Title = "ذخیره فایل پشتیبان"
save1.FileName = "Database_name"
save1.OverwritePrompt = True
save1.FilterIndex = 1
Dim str As String = "Database_name.mdf"

If save1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim con1 As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" + path + "Database_name.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
con1.Open()
Dim cmd1 As New SqlCommand()
SqlConnection.ClearAllPools()
cmd1.Connection = con1
str_path = save1.FileName.ToString
cmd1.CommandType = CommandType.Text
con1.ChangeDatabase("master")
cmd1.CommandText = "backup DATABASE [" + path & str + "] to DISK = N'" + save1.FileName.ToString + " '"
cmd1.ExecuteNonQuery()
con1.Close()
ProgressBar1.PerformStep()
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد", "ایجاد پشتیبان")
ProgressBar1.Value = 0

mahdi.m.sh
سه شنبه 25 آبان 1395, 19:15 عصر
این هم کد بازگردانی پشتیبان :



Dim Open1 As New OpenFileDialog
'Open1.DefaultExt = "Bak"
Open1.Filter = "SQL Backup Files (*.BAK)|*.BAK"
Open1.FileName = "Database_name"
Open1.Title = "دریافت فایل پشتیبان"
Open1.FilterIndex = 1

If Open1.ShowDialog = Windows.Forms.DialogResult.OK Then
Dim str As String = "Database_name.mdf"
Dim con As New SqlConnection("Data Source=.\SQLEXPRESS;AttachDbFilename=" + path + "Database_name.mdf;Integrated Security=True;Connect Timeout=30;User Instance=True")
con.Open()
Dim cmd As New SqlCommand()
SqlConnection.ClearPool(OleDbConnection1)
cmd.Connection = con

cmd.CommandType = CommandType.Text
con.ChangeDatabase("master")
cmd.CommandText = "USE MASTER RESTORE DATABASE [" + path & str + "] FROM DISK = N'" + Open1.FileName.ToString + " '"
cmd.ExecuteNonQuery()
con.Close()
ProgressBar2.PerformStep()
MessageBox.Show("پشتیبان با موفقیت بازگردانی شد", "بازگرداندن پشتیبان")
ProgressBar2.Value = 0

mahdi.m.sh
سه شنبه 25 آبان 1395, 23:05 عصر
یه برنامه برای دانلود گذاشتم
امیدوارم کارتون رو راه بندازه
نگاه کنید ، اگر مشکلی بود بپرسید

nedaei
چهارشنبه 26 آبان 1395, 10:37 صبح
با سلام و تشکر از شما دوست عزیز
کدهای ریستور متاسفانه کار نمی کنند با توجه به ورژن ویژوال که 2013 است اس کیو ال رو از اکسپرس به لوکال تغییر دادم ولی باز هم کار نمی کنه و ارور میده

mahdi.m.sh
چهارشنبه 26 آبان 1395, 12:52 عصر
برنامه من با 2010 نوشته شده
یعنی خود برنامه رو از طریق فایل exe که داخل پوشه Debug هست اجرا می کنید باز هم پیغام خطا می ده؟
اگر پیغام رو اینجا بذارید که ببنیم مشکلش چیه !
به عنوان مثال فرض کنید برنامه با عنوان APP ایجاد کردید
نکته : وقتی دیتابیس از خود ویژوال ایجاد می کنید در دو جا این دیتابیس تولید میشه :
1 - Projects\APP\APP
2 - Projects\APP\APP\bin\Debug
این برنامه با دیتابیس شماره 1 کار میکنه

nedaei
چهارشنبه 26 آبان 1395, 20:33 عصر
با سلام و تشکز از شما دوست عزیز بابت زحمتتون
برنامه شما که روی سیستم من هر کار میکنم کار نمیکنه ولی کدهاشو که بردم توی یک برنامه که درست کردم کد بکاپ درست است و لی ریستور خراب است و این هم ارورش

143520

nedaei
چهارشنبه 26 آبان 1395, 21:04 عصر
با سلام مجدد
یک کدهای جدیدی گذاشتم که ریستور هم درست کار میکنه ولی یک اشکالی که داره اینه که وقتی ریستور میکنیم و دوباره برنامه رو باز میکنیم و میخایم دومرتبه ریستور بکنیم یک ارور میده و توی اس کیو ال منیجمنت هم روی تیبل عکس یک آدم کوچلو ظاهر میشه اول کدها رو میزارم بعد ارور رو

Private Sub Restore(ByVal strFileName As String) Dim oCommand As SqlCommand = Nothing
Dim oConnection As SqlConnection = Nothing
Try
Dim ConectionString As String = ("Data Source =(LocalDB)\MSSQLLocalDB;AttachDbFilename=|DataDire ctory|\test1.mdf;Integrated Security=True;Connect Timeout=30")
Dim Command As String = "ALTER DATABASE [" & Application.StartupPath & "\test1.mdf] SET SINGLE_USER with ROLLBACK IMMEDIATE use master RESTORE DATABASE [" & Application.StartupPath & "\test1.mdf] FROM DISK='" & strFileName & "'"
Me.Cursor = Cursors.WaitCursor
oConnection = New SqlConnection(ConectionString)
If oConnection.State <> ConnectionState.Open Then
oConnection.Open()
End If
oCommand = New SqlCommand(Command, oConnection)
oCommand.ExecuteNonQuery()
Me.Cursor = Cursors.Default
MessageBox.Show("بازیابی انجام شد .")
Catch ex As Exception
MessageBox.Show("Error :" & ex.Message)
Finally
oConnection.Close()
oCommand.Parameters.Clear()
oCommand.Dispose()
End Try
End Sub
و ای هم ارور
143521

mahdi.m.sh
چهارشنبه 26 آبان 1395, 21:46 عصر
با سلام و تشکر از شما دوست عزیز
کدهای ریستور متاسفانه کار نمی کنند با توجه به ورژن ویژوال که 2013 است اس کیو ال رو از اکسپرس به لوکال تغییر دادم ولی باز هم کار نمی کنه و ارور میده

خواهش میکنم دوست عزیز
انشاالله که بتونم کمکی بکنم
نمونه ای گذاشتم ، تست کنید به امید خدا جواب میده
من داخل برنامه هام از همین استفاده میکنم و تا حالا هم مشکلی پیش نیورده