PDA

View Full Version : مبتدی: مشکل در backup و restore



mohsenm66
شنبه 10 دی 1390, 14:56 عصر
دوستان من برای بکاپ و ریستور کردن پایگاه داده ام در سایت جستجو کردم و به یکسری جواب هایی رسیدم و آنها را در برنامه ام استفاده کردم ولی با خطا روبرو شده ام . از کلیه دوستان برنامه نویس تقاضا دارم در رفع خطا به من کمک کنند.
من از VB.Net 2010 و SQL Server 2008 R2 استفاده کرده ام
کد بکاپ :


Dim cn As New System.Data.SqlClient.SqlConnection(cs)
Dim cmd As New System.Data.SqlClient.SqlCommand
cn.Open()
Dim query As String = "BACKUP DATABASE mali TO DISK = N'" + filename + "'"
cmd.CommandText = query
cmd.Connection = cn
cmd.ExecuteNonQuery()
cn.Close()



متن خطا :
Cannot open backup device 'C:\Users\mohsen\Desktop\mali_13901010_12_12.bak'. Operating system error 5(failed to retrieve text for this error. Reason: 15105).
BACKUP DATABASE is terminating abnormally.

کد restore :


con.Open()

Dim query As String = "USE master RESTORE DATABASE mali FROM DISK = N'" + filename + "'"

cmd.CommandText = query
cmd.Connection = con
cmd.ExecuteNonQuery()
con.Close()

MessageBox.Show("بازيابي با موفقيت انجام شد")


متن خطا :
The tail of the log for the database "mali" has not been backed up. Use BACKUP LOG WITH NORECOVERY to backup the log if it contains work you do not want to lose. Use the WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
RESTORE DATABASE is terminating abnormally.
Changed database context to 'master'.

klinton
شنبه 10 دی 1390, 15:03 عصر
backup:


If MsgBox("aya mayel be ijade noskheye poshtiban hastid ", 36) = MsgBoxResult.Yes Then

SaveFileDialog1.FileName =
"dabirkhane"


If (SaveFileDialog1.ShowDialog() = DialogResult.OK) Then

Cursor.Current = Cursors.WaitCursor

con.Open()


Dim com As New SqlCommand("backup database db_dabirxane to disk ='" + SaveFileDialog1.FileName + ".bak' with init,stats=10", con)

com.ExecuteNonQuery()

con.Close()

MessageBox.Show(
" ", " ", MessageBoxButtons.OK, MessageBoxIcon.Information)


End If


End If

klinton
شنبه 10 دی 1390, 15:06 عصر
restore:

If

MsgBox("aya mayel be bazyabie noskheye poshtiban hastid ", 36) = MsgBoxResult.Yes Then


''''

OpenFileDialog1.FileName =
"dabirkhane"


' OpenFileDialog1.Filter = ("Backup Files(*.bak)|*.bak")


If OpenFileDialog1.ShowDialog = Windows.Forms.DialogResult.OK Then


Dim cmd As String = "ALTER DATABASE [db_dabirxane] SET SINGLE_USER with ROLLBACK IMMEDIATE USE MASTER ; restore Database [db_dabirxane] from disk='" & OpenFileDialog1.FileName & "'WITH FILE = 1, NOUNLOAD, REPLACE, STATS = 10"


Dim comm As New SqlCommand(cmd, con)

con.Open()

comm.ExecuteNonQuery()

con.Close()

MsgBox(
" ", MsgBoxStyle.Information)


End If


End If



شما بجای db_dabirxane نام دیتابیستون و بجای con نام connection تونرو بنویسید

mohsenm66
شنبه 10 دی 1390, 17:02 عصر
دوست عزیز ممنون از جوابتون ولی یه سوالی دارم
STATS = 10 یعنی چه ؟
در ضمن مشکل کد خودم کجا بود ؟

mohsenm66
یک شنبه 11 دی 1390, 15:37 عصر
باز هم هنگام backup با خطای بالا روبرو می شوم. به نظر شما مشکل از کجاست ؟

klinton
دوشنبه 12 دی 1390, 14:47 عصر
WITH REPLACE or WITH STOPAT clause of the RESTORE statement to just overwrite the contents of the log.
بجای with rollback بنویسید WITH STOPAT یا WITH REPLACE