![](/img/trans.png)
[英]how to use VB.NET to connect to sql server with user 'sa' and restore a database
[英]Restore SQL Server localdb in vb.net
我想恢复一个 SQL 服务器 localdb 数据库。 我试过这段代码:
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim ofd As New OpenFileDialog() With
{
.Filter = "Backup file | *.bak",
.FileName = ""
}
If ofd.ShowDialog = System.Windows.Forms.DialogResult.OK Then
Cursor = Cursors.WaitCursor
Dim csb = New SqlConnectionStringBuilder("Data Source=(LocalDB)\v11.0;AttachDbFilename=C:\Users\CHAKER\Documents\RestoDB.mdf;Integrated Security=True;Connect Timeout=30")
Dim dbFullPath = csb.AttachDBFilename
Dim sql = String.Format("RESTORE DATABASE ""{0}"" From DISK = '{1}'", dbFullPath, ofd.FileName)
Dim cmd As New SqlCommand(sql, con)
cmd.ExecuteNonQuery()
MsgBox("Restore complete")
Cursor = Cursors.Default
End If
End Sub
我得到这个例外:
RESTORE 无法处理数据库“C:\Users\CHAKER\Documents\RestoDB.mdf”,因为此 session 正在使用它。 建议在执行此操作时使用 master 数据库。
您的代码存在许多问题:
AttachDbFileName
附加了它,并且无法恢复这样的数据库。 在任何情况下都不推荐使用AttachDbFileName
。 您应该使用普通的CREATE DATABASE FOR ATTACH
语法将其附加到 LocalDB。Using
来处理您的连接和命令对象。 不要缓存连接 object。RESTORE
命令上使用参数化,而不是直接注入名称In settings file:
ConnectionString "Data Source=(LocalDB)\v11.0;Initial Catalog=RestoDB;Integrated Security=True;Connect Timeout=30"
Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
Dim ofd As New OpenFileDialog() With
{
.Filter = "Backup file | *.bak",
.FileName = ""
}
If ofd.ShowDialog <> System.Windows.Forms.DialogResult.OK Then Exit Sub
Try
Cursor = Cursors.WaitCursor
Const sql = "RESTORE DATABASE @DB From DISK = @FileName"
Using con As New SqlConnection(Properties.ConnectionString),
cmd As New SqlCommand(sql, con)
cmd.Parameters.Add("@DB", SqlDbType.NVarChar, 128).Value = con.Database
cmd.Parameters.Add("@FileName", SqlDbType.NVarChar, 255).Value = ofd.FileName
cmd.ExecuteNonQuery()
End Using
MsgBox("Restore complete")
End Try
Catch ex As Exception
MsgBox("Error: " + ex.Message)
End Catch
Finally
Cursor = Cursors.Default
End Finally
End Sub
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.