【发布时间】:2019-12-18 07:45:42
【问题描述】:
错误消息:无法获得独占访问权限,因为 数据库正在使用中。恢复数据库异常终止。
我的备份代码有效,但我不知道为什么此恢复代码无效。
Try
Dim con2 As SqlConnection
Dim com2 As SqlCommand
Dim filename2 As String
Dim strquery2 As String
Dim database2 As String
Dim get_servername2 As String
'get the value selected in Database Name Dropdown Menu
database2 = Database_NameComboBox.Text
'get the value selected in Server Name Dropdown Menu
get_servername2 = Server_NameComboBox.Text.Trim
Dim opendlg As New OpenFileDialog
Dim constr2 As String
' set SQL connection data source using default Master Database
constr2 = "Data Source=" & get_servername2 & ";Initial Catalog=master;Integrated Security=SSPI"
' open SQL Database to restore
If opendlg.ShowDialog = Windows.Forms.DialogResult.OK Then
Me.Cursor = Cursors.WaitCursor
con2 = New SqlConnection(constr2)
con2.Open()
filename2 = opendlg.FileName
strquery2 = "Restore database " & database2 & " from disk='" & filename2 & "'"
' execute command
Try
com2 = New SqlCommand(strquery2, con2)
com2.ExecuteNonQuery()
MessageBox.Show("Database " & database2 & " has been Restored Successfully", "IBP Legal Aid Case Management System - Restore Database", MessageBoxButtons.OK, MessageBoxIcon.Information)
con2.Close()
Me.Server_NameComboBox.SelectedIndex = -1
Me.Database_NameComboBox.SelectedIndex = -1
Me.Database_NameComboBox.Enabled = False
Me.Cursor = Cursors.Default
Catch ex As Exception
Me.Cursor = Cursors.Default
MessageBox.Show(ex.Message)
End Try
End If
Catch ex As Exception
Me.Cursor = Cursors.Default
MessageBox.Show(ex.Message)
End Try
【问题讨论】:
-
您可以打开另一个连接。例如,在您的 catch 块中,您不会关闭连接。看看如何使用 Using 语句 并在程序中随处更改代码模式
-
您的代码对 sql 注入是开放的。学会正确地参数化你的代码——这个应用程序是否只在内部使用并不重要。养成良好的习惯。
标签: sql-server database vb.net restore