PDA

View Full Version : مشکل در بازگرداندن بکاب



ehsan-68
یک شنبه 09 مهر 1391, 08:01 صبح
سلام ...

میخوام بدونم با این خطا چیکار باید بکنم :


.ExecuteNonQuery: Connection property has not been initialized


تو تالار گشتم پیدا نکردم ...

حمیدرضاصادقیان
یک شنبه 09 مهر 1391, 08:50 صبح
سلام.
کدی که نوشتید چی هست؟ کدتون رو اینجا قرار بدید.

ehsan-68
یک شنبه 09 مهر 1391, 09:38 صبح
سلام.
کدی که نوشتید چی هست؟ کدتون رو اینجا قرار بدید.

Dim Path1 As String = Application.StartupPath.ToString
Dim rwd As New ReadWriteData()
rwd.command = New System.Data.SqlClient.SqlCommand()
rwd.command.Connection = rwd.connection

If RBbackup.Checked = True Then

rwd.command.CommandText = "BACKUP DATABASE [" & Path1 & "\Insurance.mdf] TO DISK='" & path & "'" & " WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10"
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()

frmwaite.ShowDialog()
frmwaite.MdiParent = Mainform
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد", "پشتیبان گیری", MessageBoxButtons.OK, MessageBoxIcon.Information)

ElseIf RBunbakup.Checked = True Then


rwd.command.CommandText = "ALTER DATABASE [" & Path1 & "\Insurance.mdf] SET SINGLE_USER with ROLLBACK IMMEDIATE"
rwd.command = New SqlCommand()
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()


rwd.command.CommandText = "USE master; RESTORE DATABASE [" & Path1 & "\Insurance.mdf]" & " FROM DISK ='" & path & "'" & " WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10"
rwd.command = New SqlCommand()
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()

frmwaite.ShowDialog()
frmwaite.MdiParent = Mainform
MessageBox.Show("بازیابی داده ها با موفقیت انجام شد", "پشتیبان گیری", MessageBoxButtons.OK, MessageBoxIcon.Information)


End If

در بخش پشتیبان گیری مشکلی ندارم ... فقط بازگرداندن بکابم ایراد داره ...

یه سوال دیگه ... اگه اسم بکابم فارسی باشه در زمان بازگرداندن مشکلی پیش میاد ؟

حمیدرضاصادقیان
دوشنبه 10 مهر 1391, 09:41 صبح
دوست عزیز شما وقتی دارید دستور اجرایی رو ارسال میکنید نیازی به Open کردن نیست. همون Execute کافیه.

rwd.connection.Open()

این خط اضافیه که قبل از

rwd.command.ExecuteNonQuery()
نوشتید.

مورد دوم اینکه شما برای Backup دارید مسیر فایل MDF رو میدین که این خطا ایجاد میکنه .چون از فایل شما نمیتونید Backup تهیه کنید و باید حتما نام دیتابیس رو قید کنید.
درمورد دستور Restore هم به جای نام فایل MDF باید نام دیتابیس رو بنویسید.
برای Alter Database نیز به همین شکل باید نام دیتابیس رو بنویسید و نام فایل MDF رو حذف کنید.

ehsan-68
دوشنبه 10 مهر 1391, 09:48 صبح
در مورد بکاب که مشکلی ندارم درست بکاب میگیره ... :چشمک:

در زمان Restore کردن ، یعنی شما میرفمایید پسوند فایل دیتابیسمو ننویسم فقط اسمشو بذارم ؟ ( MDF ) :متفکر:

.
.
.
ولی من اینکارایی رو که گفتین کردم بازم نتیجه نگرفتم و همون ارورو میده ... :گریه:

( اموال اتصال به مقداردهی اولیه نشده است. )

ehsan-68
دوشنبه 10 مهر 1391, 12:17 عصر
آقا من مشکلمو حل کردم ...

مشکل فقط این بود که یه کد اضافی نوشته بودم ...

کد اصلاح شده رو میذارم و شما خودت نگاه کن ... اونایی که سبزه اضاف بود ...

بعد یه مورد دیگه اگه کد زیرو برمیداشتم کار نمیکرد ...

rwd.connection.Open()

...

If RBbackup.Checked = True Then

rwd.command.CommandText = "BACKUP DATABASE [" & Path1 & "\Insurance.mdf] TO DISK='" & path & "'" & " WITH NOFORMAT, NOINIT, SKIP, NOREWIND, NOUNLOAD, STATS = 10"
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()

frmwaite.ShowDialog()
frmwaite.MdiParent = Mainform
MessageBox.Show("پشتیبان گیری با موفقیت انجام شد", "پشتیبان گیری", MessageBoxButtons.OK, MessageBoxIcon.Information)

ElseIf RBunbakup.Checked = True Then


rwd.command.CommandText = "ALTER DATABASE [" & Path1 & "\Insurance.mdf] SET SINGLE_USER with ROLLBACK IMMEDIATE"
'rwd.command = New SqlCommand()
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()


rwd.command.CommandText = "USE master; RESTORE DATABASE [" & Path1 & "\Insurance.mdf]" & " FROM DISK ='" & path & "'"
'rwd.command = New SqlCommand()
rwd.connection.Open()
rwd.command.ExecuteNonQuery()
rwd.connection.Close()

frmwaite.ShowDialog()
frmwaite.MdiParent = Mainform
MessageBox.Show("بازیابی داده ها با موفقیت انجام شد", "پشتیبان گیری", MessageBoxButtons.OK, MessageBoxIcon.Information)

End If

بازم از زحمت و راهنمایی شما متشکرم ...