My C#.Net windows应用程序连接到SQLServer2005数据库并实现数据库备份功能。
在我的申请中,
我尝试执行这样的文件复制:
<!-- language:lang-csharp -->
File.Copy(Application.StartupPath + "\\dbSTK.mdf", "D:\\dbSTK123.mdf",true);
但它会抛出异常并显示以下消息:
" The Process cannot Access the File, because it is being use by another Process"
如何复制已在使用的db文件?
答案 0 :(得分:2)
在SqlServer运行时,您无法复制mdf文件。只需临时关闭SqlServer或在复制之前分离该数据库(here)。
答案 1 :(得分:1)
相反,复制实际的MDF,使用SQL Server的内置BACKUP命令备份MDF可能更好。
分离数据库然后复制数据库的建议存在问题,因为它会使数据库脱机。
答案 2 :(得分:0)
服务器拒绝对数据文件的进程访问。一旦打开数据文件,其他进程也无法打开。这就是你的功能失败的原因。
答案 3 :(得分:0)
您应关闭与DB的所有打开连接以访问DB文件。但通常,您不应该触摸数据库文件。您最好使用SQL命令备份数据库。
string backupCommandText = "BACKUP DATABASE [<YOUR_DB_NAME>]" +
"TO DISK = N'<BACKUP_PATH>' WITH NOFORMAT, NOINIT, " +
"NAME = N'Web-Full Database Backup', SKIP, NOREWIND, NOUNLOAD, STATS = 10";
SqlCommand cmd = new SqlCommand();
cmd.CommandText = backupCommandText ;
cmd.Connection = conn;
cmd.ExecuteNonQuery();