如何复制mdf文件到一个文件夹与c#

本文关键字:一个 文件夹 文件 何复制 复制 mdf | 更新日期: 2023-09-27 18:11:51

我使用c#,我有一个小的SQL Server数据库,我需要复制到一个文件夹C:'databases',方法名称是CreateCopy

但在文件。复制行出现错误:"The Process cannot Access the File, because it is being use by another Process"

我读了那个文件。只有关闭SqlServer或将该数据库分离,创建副本并重新打开SqlServer后才能执行复制。但是如何通过代码来实现呢?

这是我尝试使用的方法:

public static void CreateCopy()
{
    try
    {
        DateTime date = DateTime.Now;
        SqlConnection connection = new SqlConnection(MDF_CONNECTION_STRING);
        String dbpath = String.Format(@"C:'databases'{0:yyyyMMdd}.mdf", Cash, date);
        File.Copy(@"C:'Program Files'Microsoft SQL Server'MSSQL12.MSSQLSERVER'MSSQL'DATA'database.mdf", dbpath);
        String lgpath = String.Format(@"C:'databases'{0:yyyyMMdd}_log.ldf", Cash, date);
        File.Copy(@"C:'Program Files'Microsoft SQL Server'MSSQL12.MSSQLSERVER'MSSQL'DATA'database_log.ldf", lgpath);    
    }
    catch(Exception e)
    {
        throw new ApplicationException("Error", e);
    }
}

提前感谢!

这不是这里的副本,因为我不需要创建一个bak文件,我需要存档这个数据库。我只需要复制这两个文件。MDF和。ldf)放到一个文件夹中。这些答案对我没有帮助

如何复制mdf文件到一个文件夹与c#

我所理解的是,您正在寻找的代码将帮助您以编程方式枚举,附加和分离SQL Server数据库,以便您可以将MDF文件复制到该位置。您还可以查看如何备份和恢复,以获得AttachDbFilename模式的概念。

数据库文件。mdf和。ldf文件由SQL Server引擎使用。

如果你从SQL Server实例中分离数据库,那么你可以复制或移动这些文件。

但是当您DETACH db时,它将无法访问!

所以最好在SQL中运行备份命令,然后再使用它

删除SqlConnection connection = new SqlConnection(MDF_CONNECTION_STRING);,它将访问.mdf文件并在File.Copy()执行后给予它。因为在File.Copy()执行的时候文件正在被SqlConnection使用这是因为你会得到这样的错误