C# 无法将数据库复制为备份文件
说明:C# 无法将数据库复制为备份文件,c#,asp.net,C#,Asp.net,说明: 我试图将我的sql数据库复制为备份文件,一旦我登录并重定向到backup.aspx,我单击了备份按钮,它会提示我一个错误输出 如果我直接打开backup.aspx,我可以复制数据库而不会出现任何错误 我知道问题是我的数据库在我登录后是连接的,所以它告诉我它正被另一个进程使用 我想问的是,无论如何,这个问题能解决吗 我的目标是在页面加载时断开与数据库的连接,但我无法做到,它仍然提示我相同的错误 错误消息: 进程无法访问文件“C:\Users\Roy\Desktop\backup” fy
- 我试图将我的sql数据库复制为备份文件,一旦我登录并重定向到
,我单击了备份按钮,它会提示我一个错误输出backup.aspx
- 如果我直接打开
,我可以复制数据库而不会出现任何错误backup.aspx
- 我知道问题是我的数据库在我登录后是连接的,所以它告诉我它正被另一个进程使用
- 我想问的是,无论如何,这个问题能解决吗
- 我的目标是在页面加载时断开与数据库的连接,但我无法做到,它仍然提示我相同的错误
string time1 = DateTime.Now.ToString("dd-MM-yyyy hh-mmtt");
Directory.CreateDirectory(@"C:/SME-Online/" + time1);
string destination = @"C:/SME-Online/" + time1;
string source = Server.MapPath(@"~/App_Data");
File.Copy(Path.Combine(source, "Database.mdf"), Path.Combine(destination, "Database.mdf"), true);
File.Copy(Path.Combine(source, "Database_log.LDF"), Path.Combine(destination, "Database_log.LDF"), true);
您应该首先备份数据库,然后复制*.bak文件作为备份,这里有一些代码可以帮助您开始,当然您可以根据需要更改查询或文件名生成代码,请务必查看T-SQL语句帮助
public void BackupDatabase()
{
/// this method should get opened connection
SqlConnection conn = GetOpenedDBConnectionFromSomewhere();
string dbName = conn.Database;
string backupFName = "c:\\MSSQLData\\Backup\\" + dbName + "_" + DateTime.Now.Ticks.ToString() + ".bak";
string sql = "BACKUP DATABASE [" + conn.Database + "] TO DISK = '" + backupFName + "'" +
"WITH NOFORMAT, INIT, NAME = 'Backup of DB:" + dbName + "', SKIP, NOREWIND, NOUNLOAD, STATS = 10;";
using (SqlCommand cmd = new SqlCommand(sql, conn))
{
cmd.ExecuteNonQuery();
}
}
可能您无法正确关闭连接。请在您使用的位置发布登录密码,然后释放连接。可能serverfault.com上的人可以更好地回答此问题…如果数据库由SQL Server管理,您不能只复制文件。您应该检查SQL Server备份(创建一个
.bak
文件并将其发送),或者在复制.mdf
和.ldf
文件之前,您需要了解如何从SQL Server分离数据库。