PDA

View Full Version : سوال: مشكل در Restore كردن ديتابيس از پروژه VB.Net



mgh64120
چهارشنبه 08 اردیبهشت 1389, 09:55 صبح
سلام
من در پروژم (VB.Net 2008) ميخوام پايگاه داده ام( SQL Server 2000) رو توسط فايل بكاپي كه قبلا تهيه كردم بازگرداني(Restore) كنم. اما به خاطر اينكه من در قسمتهاي مختلف برنامه كانكشن ايجاد كرده و به پايگاه داده وصل شده و اطلاعاتي رو گرفته و كانكشن رو مي بندم، پيغام درحال استفاده بودن ديتابيس رو ميده(DB Use) :




Dim Con As New SqlConnection
.
.
.
Con.Close
Con = Nothing



چطوري ديتابيس رو از حالت Use در بياورم.
ناگفته نماند كه در بكاپ گيري هيچ مشكلي وجود نداره!
پيشاپيش ممنون از توجه عزيزان :خجالت:

armin8651
چهارشنبه 08 اردیبهشت 1389, 10:30 صبح
براي اين کار شما اول بايد از دستور UseMaster تو sql استفاده کنين که بانک فعال شما تغيير پيدا کنه .
پس براي Restore کردن کد زير رو به عنوان کد Command قرار بدین


cmd.CommandText = "Use Master;ALTER DATABASE databasename SET SINGLE_USER with ROLLBACK IMMEDIATE;" & _
"RESTORE DATABASE databasename FROM DISK= '" & path & "' with REPLACE;" & _
"ALTER DATABASE databasename SET MULTI_USER"


databasename اسم دیتابیستون رو بذارین
و در متغير Path هم نام و مسير فايل Bacup رو باید قرار بدین

mgh64120
یک شنبه 12 اردیبهشت 1389, 11:16 صبح
سلام دوست عزيز
ولي بازم جواب نداد

sari-1369
یک شنبه 12 اردیبهشت 1389, 11:33 صبح
من همیشه واسه پشتیبان گیری و برگردوندن بکاپ از این کد استفاده میکنم . زمانی که برنامه به بانک وصله هم کار میکنه .

Dim sql As String = "BACKUP DATABASE [" & My.Application.Info.DirectoryPath & "\Data\DB.mdf" & "] TO DISK='" + txt_path.Text + "\FILE.bak' WITH FORMAT"
Using dbcon = New System.Data.SqlClient.SqlConnection("ConectionString")
Using dbcom = New System.Data.SqlClient.SqlCommand(sql, dbcon)
dbcon.Open()
dbcom.ExecuteNonQuery()
End Using
End Using

برگردوندن بکاپ

Dim sql As String = "USE master; RESTORE DATABASE [" & My.Application.Info.DirectoryPath & "\Data\DB.mdf" & "]" & " FROM DISK ='" & txt_path.Text & "'"
Using dbcon = New System.Data.SqlClient.SqlConnection("ConectionString")
Using dbcom = New System.Data.SqlClient.SqlCommand(sql, dbcon)
dbcon.Open()
dbcom.ExecuteNonQuery()
End Using
End Using