سلام
شاید از نسخه EXPRESS و در حالت غیر Attach استفاده میکنید، که در این شرایط دقت بیشتری لازم است.
کد زیر را امتحان کنید:
کد:Private Const SQL1 As String = "ALTER DATABASE [{0}] SET SINGLE_USER WITH ROLLBACK IMMEDIATE;"
Private Const SQL2 As String = "RESTORE DATABASE [{0}] FROM DISK = '{1}' WITH REPLACE;"
Public Sub DbRestore(ByVal file As String)
Dim iPosition As Integer = 0
Try
Using dbcon As New System.Data.SqlClient.SqlConnection("---CONNECTIONSTRING---")
System.Data.SqlClient.SqlConnection.ClearAllPools()
iPosition = 1
dbcon.Open()
Using dbcom As New System.Data.SqlClient.SqlCommand(String.Empty, dbcon)
dbcom.CommandText = String.Format(SQL1, dbcon.Database)
iPosition = 2
dbcom.ExecuteNonQuery()
dbcom.CommandText = String.Format(SQL2, dbcon.Database, file)
iPosition = 3
dbcom.ExecuteNonQuery()
End Using
End Using
Catch ex As Exception
Stop
'Use of ex, iPosition
End Try
End Sub