【发布时间】:2018-01-15 15:15:26
【问题描述】:
这是我的vb.net恢复SQL Server数据库的代码,我认为代码没有包含错误,所以执行代码时似乎没有错误,但并没有恢复数据库。
请帮我找出错误。我在网上搜索了很多,但没有找到任何解决问题的方法。
Sub restore_db()
Dim con As New SqlConnection("Data Source=HP;Database=Master;integrated security=SSPI;")
con.Open()
Dim filename As String
Dim strQuery As String
Dim objdlg As New OpenFileDialog
objdlg.FileName = "service_station"
objdlg.Filter = "SQL Server database backup files|*.bak"
objdlg.ShowDialog()
filename = objdlg.FileName
strQuery = "ALTER DATABASE service_station set SINGLE_USER WITH ROLLBACK IMMEDIATE"
strQuery = "RESTORE DATABASE service_station FROM disk='" & filename & "' WITH REPLACE,RECOVERY"
strQuery = "ALTER DATABASE service_station SET MULTI_USER WITH ROLLBACK IMMEDIATE"
Dim cmd As SqlCommand
cmd = New SqlCommand(strQuery, con)
cmd.ExecuteNonQuery()
con.Close()
End Sub
【问题讨论】:
-
不相关:“查询”而不是“Quary”
-
您正在执行的唯一“Quary”是
ALTER DATABASE service_station SET MULTI_USER WITH ROLLBACK IMMEDIATE。您正在设置并覆盖 3 条不同行上的查询值,然后执行“quary”的值。猜测一下,您应该连接strQuary的值。再说一遍,它的拼写是“Query”。 -
@Larnu 好吧,它是 spelled 查询 ;)
-
您为什么还要考虑从 vb.net 恢复数据库?这对我来说似乎是一件非常危险的事情。我不希望任何外部应用程序对我的数据库执行此操作,因为我不想为任何外部应用程序授予管理员权限。
-
@HLGEM 应用程序可以使用受信任的连接,使用打开应用程序的用户的凭据。因此,OP 可能不一定会授予应用程序访问权限(因为应用程序本身实际上没有权限)。
标签: sql-server database vb.net