Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 当应用程序仍然打开时,如何将.mdf和.ldf文件从一个位置复制到另一个位置?_Mysql_Vb.net_Database Connection_Database Backups_Mysql Backup - Fatal编程技术网

Mysql 当应用程序仍然打开时,如何将.mdf和.ldf文件从一个位置复制到另一个位置?

Mysql 当应用程序仍然打开时,如何将.mdf和.ldf文件从一个位置复制到另一个位置?,mysql,vb.net,database-connection,database-backups,mysql-backup,Mysql,Vb.net,Database Connection,Database Backups,Mysql Backup,我创建了一个使用SQL数据库存储和查询数据的应用程序。一切正常,但问题是备份,经过大量搜索,我找到了两种备份方法。首先,使用命令use[Database Name]将数据库[Database Name]备份到磁盘=“[Backup Location]”。但这种方法的问题是需要在机器上安装SSM软件,但我不希望安装它,因为它将允许用户拥有更多的控制权,然后他需要该数据库文件,所以如果有人能给我解决方案,这将是非常有帮助的。第二种方法是复制.mdf文件和.ldf文件,但问题是我无法直接从应用程序中复

我创建了一个使用SQL数据库存储和查询数据的应用程序。一切正常,但问题是备份,经过大量搜索,我找到了两种备份方法。首先,使用命令use[Database Name]将数据库[Database Name]备份到磁盘=“[Backup Location]”。但这种方法的问题是需要在机器上安装SSM软件,但我不希望安装它,因为它将允许用户拥有更多的控制权,然后他需要该数据库文件,所以如果有人能给我解决方案,这将是非常有帮助的。第二种方法是复制.mdf文件和.ldf文件,但问题是我无法直接从应用程序中复制这些文件,甚至在应用程序打开时无法间接复制,我们只能在关闭应用程序时复制这些文件,但我不希望这样,我的主要问题集中在这个问题上

我的问题。 如何使用VB.Net编码直接从应用程序将这些文件从默认位置复制到备份位置,而不关闭它?是否仍要关闭与这些文件的连接


注意:我尝试了连接。关闭并连接。处理

好的,在回答问题之前,让我说几句话,我们大多数人都知道并在许多网站上看到,复制.mdf和.ldf文件的第二种方法是最不安全的方法,可能会导致可怕的问题,而使用Transact-SQL进行备份/恢复的第一种方法与更安全的方法相比更可取、更方便。但是我想很多人,特别是像我这样的初学者,都会对使用[DatabaseName]备份数据库[DatabaseName]到磁盘=“[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]更改为您的数据库名称,并删除[]。我在另一个问题上添加了这个答案,因为它们很相似,所以你可以跟随任何人。转到另一个问题。

您不需要SSM进行备份。请参见使用Transact-SQL的示例:--“使用AdventureWorks2012;将数据库AdventureWorks2012备份到磁盘='Z:\SQLServerBackup\AdventureWorks2012.Bak',格式为,MEDIANAME='Z_SQLServerBackup',NAME='AdventureWorks2012的完整备份';GO'---这里我应该用AdventureWorks2012替换什么您的数据库名称想象一下我的数据库名称是DataDB,但仅仅用DataDB替换不会做任何事情,只会显示错误,因为我没有提到数据库的位置,这是我实际要问的…您也用mysql等标记了它,但您的问题指的是.mdf和.ldf文件和SSM,这表示MS SQL Server,这是我在评论中假设的。