好的,所以在回答问题之前让我说点什么,我们大多数人都知道并在许多网站上看到第二种方法(复制 .mdf 和 .ldf 文件)是最不安全的方法,可能会导致可怕的问题,而第一种方法(使用 Transact-SQL 进行备份/还原)更可取、更方便,而且方法更安全。但我想很多人(尤其是像我这样的初学者)会遇到查询问题,use [DatabaseName] Backup database [DatabaseName] To Disk='[Backup Location]'
因为数据库由两个文件(.mdf 和 .ldf)组成,所以这两个文件如何与这段代码一起使用。我找到的解决方案是添加initial catalog = [DatabaseName]
到我的 ConnectionString 中,检查以下代码:
Dim connectionString As String = "Data Source=(LocalDB)\MSSQLLocalDB;AttachDbFilename=" + My.Settings.DBLocation + ";initial catalog=InvoiceDB;Integrated Security=True"
Sub Backup_Click()
With SaveFileDialogue2
.Title = "Select Backup Location"
.Filter = "BAK File Only|*.bak"
.FileName = "Backup " + Format(Now.ToString("dd MMM yyyy"))
If SaveFileDialogue2.ShowDialog = DialogResult.OK Then
If .FileName <> "" Then
Dim BackupQuery As String
BackupQuery = "Backup database [DatabaseName] To Disk='" + .FileName + "'"
Using conn As New SqlConnection(connectionString)
Using comm As New SqlCommand()
With comm
.Connection = conn
.CommandType = CommandType.Text
.CommandText = BackupQuery
End With
Try
conn.Open()
comm.ExecuteNonQuery()
MsgBox("Backup Completed!", MsgBoxStyle.OkOnly, "Successful")
conn.Close()
Catch ex As SqlException
MessageBox.Show(ex.Message.ToString(), "Error Message")
Finally
conn.Dispose()
End Try
End Using
End Using
End If
End If
End With
End Sub
瞧,它奏效了!所以如果其他人有同样的问题,你可以试试这个......
注意:将 [DatabaseName] 更改为您的数据库名称并删除“[ ]”。我将此答案添加到另一个问题,因为它们相似,因此您可以关注任何人。单击此处转到另一个问题。